概述
一、打电话
1)声明权限:
<uses-permission android:name="android.permission.CALL_PHONE"/>
2)隐式跳转到打电话
Intent intent = new Intent();
intent.setAction("android.intent.action.CALL");
intent.setData(Uri.parse("tel:" + number));
startActivity(intent);
二、发短信
1)声明权限
<uses-permission android:name="android.permission.SEND_SMS"/>
2)使用SmsManager分割短信,发送短信
SmsManager sm = SmsManager.getDefault();
List<String> smss = sm.divideMessage(message);
for (String sms : smss) {
sm.sendTextMessage(number, null, sms, null, null); }
3)在Android5.0以后,只有默认短信应用具有发送短信的权限
代码修改默认短信设置
Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT); intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME,myPackageName);
startActivity(intent);
三、布局
- 线性布局:vertical排列时,内容垂直居中无效,horizonal排列时,内容水平居中无效
- 表格布局:在根节点声明stretchColumns属性拉伸列;layout_column属性修改列号,layout_span属性指定所占列数
四、在内存和外存中读写文件
内部存储空间:
路径:data/data/packageName - RAM内存:运行内存,相当于电脑的内存;
- ROM内存:存储内存,相当于电脑的硬盘;
- getFileDir,默认路径data/data/packageName/files
通常不会通过File类的方式直接读写,而是利用一些封装过的类或函数来操作,比如Context.openFileOutput或Context.openFileInput - getCacheDir,默认路径data/data/packageName/cache
String str = etContent.getText().toString();
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
fos.write(str.getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (file.exists()) {
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
String str = reader.readLine();
Toast.makeText(InnerStorage.this, "存储的数据是:" + str, Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
外部存储空间:
路径:storage/sdcard或者sdcard
SD卡或手机自带存储结构:相当于电脑的移动硬盘
使用API获得存储路径:Environment.getExternalStorageDirectory()
检测sd卡状态:Environment.getExternalStorageState();
Context.getExternalCacheDir()或Environment.getExternalStorageAppCacheDirectory获得基于扩展存储器的应用缓存目录,用于存储运行时产生的大尺寸临时文件,默认路径:/mnt/sdcard/Android/应用包名/data/cache,会随着应用的卸载一并移除
外部存储上的系统规定的图片存储目录:Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
sd卡的几种状态:
- Environment.MEDIA_MOUNTED:sd卡已挂载,可用
- Environment.MEDIA_CHECKING:sd卡准备中
- Environment.MEDIA_UNMOUNTED:sd卡存在但是没有挂载
- Environment.MEDIA_UNKNOWN:sd卡不能识别
- Environment.MEDIA_REMOVED:sd卡不存在
查看sd卡剩余空间大小:
File path = Environment.getExternalStorageDirectory();
StatFs statFs = new StatFs(path.getPath());
long blockSize;
long totalBlocks;
long availableBlocks;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2){
blockSize = statFs.getBlockSizeLong();
totalBlocks = statFs.getBlockCountLong();
availableBlocks = statFs.getAvailableBlocksLong();
}else {
blockSize = statFs.getBlockSize();
totalBlocks = statFs.getBlockCount();
availableBlocks = statFs.getAvailableBlocks();
}
String size = android.text.format.Formatter.formatFileSize(this, availableBlocks * blockSize);
读取asserts文件:getResources().getAsserts().open(“”);
读取raw文件:getResources().openRawResource(“”);
五、文件访问权限
用10个字母表示
d表示文件夹,-表示文件
第一组rwx表示的是文件拥有者对文件的访问权限,
第二组rwx表示的是跟文件拥有者属于同一用户组的用户对文件的权限
第三组rwx表示的是其它用户对文件的权限
FileOutputStream fos = openFileOutput(“info.txt”,MODE_PRIVATE);
//路径已默认为data/data/packageName/files文件夹
六、使用SharedPreference保存数据
默认路径data/data/packageName/shared_prefs
SharedPreferences sp = getSharedPreferences(“info”,MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString(“name”,name);
Editor.commit();
SharedPreferences sp = getSharedPreferences(“info”,MODE_PRIVATE);
String name = sp.getString(“name”);
七、xml文件
使用序列化生成器生成xml文件
//1.拿到序列化生成器对象
XmlSerializer xs = Xml.newSerializer();
//2.初始化
File file = new File("sdcard/message.xml");
try {
FileOutputStream fos = new FileOutputStream(file);
xs.setOutput(fos,"utf-8");//指定用什么编码生成xml文件
//3.开始生成xml文件
xs.startDocument("utf-8",true);//指定头结点中的encoding属性
xs.startTag(null,"message");
for(Message message:messages){
xs.startTag(null,"body");
xs.text(message.getBody());
xs.endTag(null,"body");
xs.startTag(null,"date");
xs.text(message.getDate());
xs.endTag(null,"date");
xs.startTag(null,"type");
xs.text(message.getType());
xs.endTag(null,"type");
xs.startTag(null,"address");
xs.text(message.getAddress());
xs.endTag(null,"address");
}
xs.endTag(null,"message");
xs.endDocument();
} catch (Exception e) {
e.printStackTrace();
}
}
使用Pull解析器解析xml文件
List<City> cityList = null;
InputStream is = getClassLoader().getResourceAsStream("weather.xml");//获取src文件夹下的资源文件
XmlPullParser xp = Xml.newPullParser();
try {
xp.setInput(is, "utf-8");
int type = xp.getEventType();//获取当前节点的事件类型
City city = null;
while(type != XmlPullParser.END_DOCUMENT) {
switch (type) {
case XmlPullParser.START_TAG:
if("weather".equals(xp.getName())){
cityList = new ArrayList<>();
}else if("city".equals(xp.getName())){
city = new City();
}else if("name".equals(xp.getName())){
city.setName(xp.nextText());
}else if("temp".equals(xp.getName())){
city.setTemp(xp.nextText());
}else if("pm".equals(xp.getName())){
city.setPm(xp.nextText());
}
break;
case XmlPullParser.END_TAG:
if("city".equals(xp.getName())){
cityList.add(city);
}
break;
}
type = xp.next();
}
} catch (Exception e) {
e.printStackTrace();
}
八、SQLite数据库
创建数据库需要SQLiteOpenHelper类
在onCreate方法中创建数据表
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table student(_id integer primary key autoincrement,name char(10))");
}
getWritableDatabase(),如果数据表不存在,创建表,获取可读可写的数据表,如果表已存在,直接打开
MyOpenHelper openHelper = new MyOpenHelper(MainActivity.this,"people.db",null,1);
SQLiteDatabase database = openHelper.getWritableDatabase();
- 使用executeSQL()方法执行增删改操作;使用rawQuery()方法执行查询操作,返回Cursor对象
使用insert(table,null,contentValues)执行插入操作;delete(table,whereClause,whereArgs)执行删除操作;update(table,contentValues,whereClause,whereArgs)执行更新操作;query(table,columns,selection,selectionArgs,groupBy,having,orderBy,limit)执行查询操作
事务:
开启事务: db.beginTransaction();
设置事务成功:db.setTransactionSuccessful();
关闭事务,提交事务:db.endTransaction();
九、对话框
使用AlertDialog内部类Builder类,进行一系列设置,生成AlertDialog对象并显示。
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(android.R.drawable.btn_default);
builder.setTitle("这是对话框标题");
builder.setMessage("这是对话内容");
//设置确定按钮
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(),"点击了确定按钮",Toast.LENGTH_SHORT).show();
}
});
//设置取消按钮
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(),"点击了取消按钮",Toast.LENGTH_SHORT).show();
}
});
//使用创建器生成一个AlertDialog对象
AlertDialog dialog = builder.create();
dialog.show();
单选对话框
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(android.R.drawable.btn_default);
builder.setTitle("请选择性别");
final String items[] = new String[]{"男","女"};
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(),"您的性别是:"+items[which],Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
builder.show();
多选对话框
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(android.R.drawable.btn_default);
builder.setTitle("请选择(多选)");
final String items[] = new String[]{"QQ", "微信", "知乎", "简书"};
final boolean checkItems[] = new boolean[]{true, true, false, false};
builder.setMultiChoiceItems(items, checkItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
checkItems[which] = isChecked;
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String text = "";
for (int i = 0; i < 4; i++) {
text += checkItems[i] ? items[i] + "." : "";
}
Toast.makeText(getApplicationContext(),text,Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
builder.show();
最后
以上就是傻傻小刺猬为你收集整理的【Android基础】一的全部内容,希望文章能够帮你解决【Android基础】一所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复