写短信备份的简单应用主要是为了使用xml的序列化,下面是读取短信数据库中短信信息,并将其转化成xml文件
int index = 0;
Uri uri = Uri.parse("content://sms");
// 读取短信
Cursor cursor = getContentResolver().query(uri, new String[] { "address", "date", "type", "body" },
null, null, null);
// 获取SD卡路径
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator
+ "sms_backup.xml";
// 备份短信的总数
int count = cursor.getCount();
progressDialog.setMax(count);
if (count > 0) {
try {
File file = new File(path);
FileOutputStream fos = new FileOutputStream(file);
// 序列化数据库中读取的数据,放到xml中
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(fos, "utf-8");
serializer.startDocument("utf-8", true);// 独立的xml,开始结束配套
serializer.startTag(null, "smss"); // 第二个参数是开始节点
while (cursor.moveToNext()) {
serializer.startTag(null, "sms");
serializer.startTag(null, "address");
serializer.text(cursor.getString(0));
serializer.endTag(null, "address");
serializer.startTag(null, "date");
serializer.text(cursor.getString(1));
serializer.endTag(null, "date");
serializer.startTag(null, "type");
serializer.text(cursor.getString(2));
serializer.endTag(null, "type");
serializer.startTag(null, "body");
serializer.text(cursor.getString(3));
serializer.endTag(null, "body");
serializer.endTag(null, "sms");
index = index + 1;
progressDialog.setProgress(index);
if (index == cursor.getCount()) {
progressDialog.dismiss();
}
}
serializer.endTag(null, "smss");
serializer.endDocument();
} catch (Exception e) {
e.printStackTrace();
}
} else {
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "没有短信可备份", 0).show();
}
});
}
};