短信备份
短信备份流程
① 获取内容解析者
ContentResolver resolver = getContentResolver();
② 查询短信
Uri uri = Uri.parse("content://sms");
Cursor cursor = resolver.query(uri, new String[]{"address", "date", "body"}, null, null, null);
③ 遍历短信内容,并存在集合中
if (cursor!=null){
while (cursor.moveToNext()){
String address = cursor.getString(0);
String date = cursor.getString(1);
String body = cursor.getString(2);
Log.e(TAG,"address"+address+"*********"+"date"+date+"************"+"body"+body);
//将短信的内容存在集合中
smses.add(new SMS(date,address,body));
}
}
④ 创建xml序列化器
XmlSerializer serializer = Xml.newSerializer();
⑤ 指定备份文件名和存储的位置
serializer.setOutput(openFileOutput("sms.xml",MODE_PRIVATE),"utf-8");
⑥ 遍历集合中短信的内容,并通过序列化器存储在XML文件中
serializer.startDocument("utf-8",true);
serializer.startTag(null,"SMSlist");
//遍历集合,将元素获取出来
for(SMS sms:smses){
serializer.startTag(null,"SMS");
serializer.startTag(null,"address");
serializer.text(sms.address);
serializer.endTag(null,"address");
serializer.startTag(null,"date");
serializer.text(sms.date);
serializer.endTag(null,"date");
serializer.startTag(null,"body");
serializer.text(sms.body);
serializer.endTag(null,"body");
serializer.endTag(null,"SMS");
}
Toast.makeText(this, "备份完成", Toast.LENGTH_SHORT).show();
serializer.endTag(null,"SMSlist");
serializer.endDocument();
注意:
短信的读取需要权限:
<uses-permission android:name="android.permission.READ_SMS"/>
把短信存储在集合中时需要用到一个javabean对象
public class SMS {
public String date;
public String address;
public String body;
public SMS(String date, String address, String body) {
this.date = date;
this.address = address;
this.body = body;
}
@Override
public String toString() {
return "SMS{" +
"date='" + date + '\'' +
", address='" + address + '\'' +
", body='" + body + '\'' +
'}';
}
}