① 获取内容解析者
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 + '\'' + '}'; } }