大家晚上好,这讲给大家分享的是安全有效的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保存的短信。晚安,希望你们有个愉快的夜晚。
??
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|