再也不怕短信丢失了---短信备份

大家晚上好,这讲给大家分享的是安全有效的demo短信备份。原理是这样的,在系统中找到短信信息数据库,再将数据库里面的信息保存到其他可知的地方,这个地方指的是新建的小应用私有目录里,用到的知识点有内容提供者的使用,保存文件,如何以xml文件形式保存。恩,不多说,立马开讲。

还是先跟大家介绍一下布局文件,我写的布局文件就是一个button按钮,当点击按钮时,短信备份成功,最后以友好提示提示

MainActivity.java

// 进入短信备份
public void blackupSms(View v) {

//友好提示
ToastUtil.show(context,"备份成功");

try{
//创建一个写入流,认保存路径是data/data/包名/files,参数一:文件名,xml形式,参数二:保存的形式,私有
FileOutputStream fos=openFileOutput("message.xml",MODE_PRIVATE);
//调用业务层方法,参数是:上下文,输出
SmsEngine.BlackMessage(context,fos);


} catch (Exception e) {
e.printstacktrace();
}

}

SmsEngine.java

/**
*短信备份业务层
*/
public class SmsEngine {

public static void BlackMessage(Context context,FileOutputStream fos) throws Exception{
//创建内容提供者对象,更新数据
ContentResolver contentResolver = context.getContentResolver();

//访问短信系统数据库uri
String uri="content://sms";
//创建序列器
XmlSerializer serializer=Xml.newSerializer();
//以输出流保存xml文件,保存的格式
serializer.setoutput(fos,"utf-8");
serializer.startDocument("utf-8",true);//开始写入文档
serializer.startTag(null,"smss");//开始写入标签

//利用访问者查询短信系统数据库,参数一:解析后的uri,参数二:查询的字段,返回的是游标
Cursor cursor = contentResolver.query(Uri.parse(uri),new String[]{"address","date","type","body"},null,null);

//遍历游标
while(cursor.movetoNext()){
//获取各字段的值
String address = cursor.getString(0);
String date = cursor.getString(1);
String type = cursor.getString(2);
String body = cursor.getString(3);

serializer.startTag(null,"sms");//sms标签

serializer.startTag(null,"address");//address开始标签
serializer.text(address);//写入xml文本
serializer.endTag(null,"address");//adress结束标签

serializer.startTag(null,"date");//date标签
serializer.text(date);
serializer.endTag(null,"date");

serializer.startTag(null,"type");//type标签
serializer.text(type);
serializer.endTag(null,"type");

serializer.startTag(null,"body");//body标签
serializer.text(body);
serializer.endTag(null,"body");


serializer.endTag(null,"sms");//sms结束标签
}

serializer.endTag(null,"smss");//smss结束便签
serializer.endDocument();//结束文档

fos.close();//关闭流,游标
cursor.close();
}

代码就怎么多,就能实现数据的转移,短信的备份,只要在你创建的应用data/data/包名/files目录下,可以找到以xml保存的短信。晚安,希望你们有个愉快的夜晚。






相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念