備份短信同時用xml序列話器處理數據
public void BackupSMS() {
ContentResolver resolver = getContentResolver();
Uri uri = Uri.parse("content://sms/");
//參數 字符串數組裏面只獲取三列(發件人,內容,時間),如要其他字段自行添加
Cursor cursor = resolver.query(uri, new String[] { "address", "body", "date" }, null, null, null);
//保存到file下
File file = new File(Environment.getExternalStorageDirectory(), "sms.xml");
//等到文件的輸入流
FileOutputStream fos = new FileOutputStream(file);
//等到XML序列化
XmlSerializer xml = Xml.newSerializer();
//設置輸入 ,編碼utf-8
xml.setOutput(fos, "utf-8");
// 文件頭
xml.startDocument("utf-8", true);
//一級標籤開頭,有頭必有尾與之對應
xml.startTag(null, "messages");
//下面就遍歷提供者獲取的數據 從遊標cursor遍歷
while (cursor.moveToNext()) {
String address = cursor.getString(0);
String body = cursor.getString(1);
long date = cursor.getLong(2);
// Toast.makeText(this, address+"----"+body+"------"+new
// Date(date), Toast.LENGTH_LONG).show();
xml.startTag(null, "sms");
xml.startTag(null, "address");
xml.text(address);
xml.endTag(null, "address");
xml.startTag(null, "body");
xml.text(body);
xml.endTag(null, "body");
xml.startTag(null, "date");
xml.text(date + "");
xml.endTag(null, "date");
xml.endTag(null, "sms");
}
//結尾一級標籤
xml.endTag(null, "messages");
//文件尾
xml.endDocument();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}