博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ContentProvider备份短信,以xml文件存储
阅读量:4311 次
发布时间:2019-06-06

本文共 2488 字,大约阅读时间需要 8 分钟。

因为短信的内容已经通过ContentProvider暴露出来,所以我们可以直接用内容解析者获取短信内容。

想要获取短信内容,你需要知道的一些东西:

1、Uri uri = Uri.parse("content://sms/");

2、Cursor cursor = getContentResolver().query(uri,new String[]{"address","date","body"},null,null,null);

 

知道了这个就好获取短信的相关信息了

先看代码吧:

 

1 public void onClick(View v) { 2         XmlSerializer serializer = Xml.newSerializer(); 3         File file = new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup.xml"); 4         try { 5             FileOutputStream outputStream =   new FileOutputStream(file); 6             serializer.setOutput(outputStream, "utf-8"); 7             serializer.startDocument("utf-8",true); 8             serializer.startTag(null,"smss"); 9 10             Uri uri = Uri.parse("content://sms/");11             Cursor cursor = getContentResolver().query(uri,new String[]{"address","date","body"},null,null,null);12             if (cursor!=null){13             while (cursor.moveToNext()){14                 String address = cursor.getString(0);15                 String date = cursor.getString(1);16                 String body = cursor.getString(2);17 18                 try {19                     //sms节点20                     serializer.startTag(null,"sms");21                     //address节点22                     serializer.startTag(null,"address");23                     serializer.text(address);24                     serializer.endTag(null,"address");25                     //date节点26                     serializer.startTag(null,"date");27                     serializer.text(date);28                     serializer.endTag(null,"date");29                     //body节点30                     serializer.startTag(null,"body");31                     serializer.text(body);32                     serializer.endTag(null,"body");33 34                     serializer.endTag(null,"sms");35 36                 } catch (IOException e) {37                     e.printStackTrace();38                 }39                 System.out.println(address+"---"+date+"---"+body);40             }41         }42             serializer.endTag(null,"smss");43             serializer.endDocument();44             outputStream.close();45         } catch (FileNotFoundException e) {46             e.printStackTrace();47         } catch (IOException e) {48             e.printStackTrace();49         }50 51     }

 

主要用内容解析者获取短信的信息和内容,然后用XmlSerializer存储。

下面是Manifest.xml:需要加上这三个权限

1     
2
3

 

转载于:https://www.cnblogs.com/Godfunc/p/6060180.html

你可能感兴趣的文章
Android 面试题整理总结(一)Java 基础
查看>>
Android 面试题整理总结(二)Java 集合
查看>>
学习笔记_vnpy实战培训day02
查看>>
学习笔记_vnpy实战培训day03
查看>>
VNPY- VnTrader基本使用
查看>>
VNPY - CTA策略模块策略开发
查看>>
VNPY - 事件引擎
查看>>
MongoDB基本语法和操作入门
查看>>
学习笔记_vnpy实战培训day04_作业
查看>>
OCO订单(委托)
查看>>
学习笔记_vnpy实战培训day06
查看>>
回测引擎代码分析流程图
查看>>
Excel 如何制作时间轴
查看>>
matplotlib绘图跳过时间段的处理方案
查看>>
vnpy学习_04回测评价指标的缺陷
查看>>
iOS开发中遇到的问题整理 (一)
查看>>
Linux(SUSE 12)安装jboss4并实现远程访问
查看>>
Neutron在给虚拟机分配网络时,底层是如何实现的?
查看>>
netfilter/iptables全攻略
查看>>
Overlay之VXLAN架构
查看>>