上节中我们是手动拼接xml文件,但是上节中那样的做法会有一个问题,比如:

//插入消息的内容
sBuffer.append("<body>");
sBuffer.append(sms.getBody() + "</body>");
sBuffer.append("</body>");

我在插入消息内容的时候,在追加内容里面加了个 </body>。 这样就会出现解析错误的

所以这节我们使用xml的序列化器来拼接短信内容。

下面的代码是如何用xml序列化器拼接一个文件:

public class MainActivity extends Activity {List<Message> list;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);list = new ArrayList<Message>();}public void storageMessage(View v){//得到ContentResolverContentResolver cr = getContentResolver();//查询系统的短信,只需要查询我们关心的字段Cursor cursor = cr.query(Uri.parse("content://sms"), new String[]{"address", "date", "type", "body"}, null, null, null);//取出查询到的信息while(cursor.moveToNext()){String address = cursor.getString(cursor.getColumnIndex("address"));String date = cursor.getString(cursor.getColumnIndex("date"));String type = cursor.getString(cursor.getColumnIndex("type"));String body = cursor.getString(cursor.getColumnIndex("body"));//将每条短信放入List集合中Message msg = new Message(address, date, type, body);list.add(msg);}//先拿到xml序列化对象XmlSerializer xs = Xml.newSerializer();File file = new File("sdcard/sms2.xml");try {FileOutputStream fos = new FileOutputStream(file);//utf-8用于指定用什么编码生成xml文件xs.setOutput(fos, "utf-8");//utf-8指定头结点中enconding的属性的值xs.startDocument("utf-8", true);xs.startTag(null, "message");for (Message sms : list) {xs.startTag(null, "sms");xs.startTag(null, "address");xs.text(sms.getAddress());xs.endTag(null, "address");xs.startTag(null, "type");xs.text(sms.getType());xs.endTag(null, "type");xs.startTag(null, "date");xs.text(sms.getDate());xs.endTag(null, "date");xs.startTag(null, "body");xs.text(sms.getBody() + "<body>");xs.endTag(null, "body");xs.endTag(null, "sms");}xs.endTag(null, "message");//告诉序列化器,文件生成完毕xs.endDocument();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}  

可以看到,我故意给短信的内容加了个body。

导出来查询备份的文件信息:

可以看到xml序列化器在内部已经自动处理了。

Android 存储学习之保存系统短信到SD卡(使用XML序列化器)相关推荐

  1. Android-插入短信及备份手机中的短信到SD卡

    短信数据库 只需要关注sms表 只需要关注4个字段 body:短信内容 address:短信的发件人或收件人号码 date:短信时间 type:1为收到,2为发送 读取系统短信,首先查询源码获得短信数 ...

  2. Android内容提供器的应用,基于Android的智能终端应用防护系统短信过滤子模块的设计与实现...

    摘要: 智能终端随着3G业务的推广而普及,在各种平台的竞争中,Android逐渐占据了主流,谷歌学习苹果的应用商店模式,推出了自己的应用商城.面对应用市场的繁荣,用户的终端安装了形形色色的应用,许多安 ...

  3. Android开发学习之电话、短信、联系人

    作为一部手机,最重要的功能当属电话.短信.联系人了,所以今天想和大家分享的是关于Android电话.短信.联系人这块的API接口. 1.通话记录的获取 List<TelePhoneRecord& ...

  4. Android - 接收、监听系统短信广播

       广播接收者(BroadcastReceiver)是安卓的四大组件之一.类似于日常生活中的广播,安卓系统中的广播也有发送者和接收者.发送者通常是系统的应用程序,比如电池电量低.开关机.有电话或短信 ...

  5. android studio内容提供者(查看短信的猫)点击查看短信,闪退,无法显示短信内容。(附程序源代码,以及解决办法)

    报错的问题: Permission Denial: readingcom.android.providers.telephony.SmsProvider uri content://sms/ 找到问题 ...

  6. android系统短信库的一些用法

    1.查询所有短信,按发件人进行分组 Cursor mCursor =managedQuery(Uri.parse("content://sms"),new String[] {&q ...

  7. android不调用系统发送短信,android之两种方式调用短信发送接口

    释放双眼,带上耳机,听听看~! 相信很多程序员在开发程序的时候都会遇到短信调用端口的情况,今天是技术狗小编为大家带来的关于android之两种方式调用短信发送接口,希望对你学习这方面知识有帮助! an ...

  8. android手机获取系统短信sqlite数据库并查看内容

    一个朋友过来,准备玩玩Ta的android手机,给我之前还要拿回去看看,结果是ta把短信加密了(第三方短信),怕我知道ta的啥见不得人的秘密.o(∩_∩)o 哈哈.TA威胁我说加密了,看我怎么看.结果 ...

  9. Android软件开发之发送短信与系统短信库解析(三十)

    Android软件开发之发送短信与系统短信库解析 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/arc ...

  10. android ContentObserver监听系统短信和备份短信到本地

    contentProvider中的一个工具,记录一下. 监听短信: package com.example.messagedemo;import android.net.Uri; import and ...

最新文章

  1. php批量导出pdf文件大小,php完美导出pdf,pdf合并批量导出
  2. Git单人本地仓库操作
  3. Firefox 控制台
  4. js函数声明和函数表达式的区别
  5. [NOIP 2011普及组 No.4] 表达式的值
  6. oracle数据库批量操作系统,Oracle批量操作数据库
  7. 线上Haproxy配置
  8. 常用SQL语句书写技巧-
  9. Element UI的Table用法
  10. TQuery组件的Open方法与ExecSQL的区别
  11. python爬取新闻发送微信_如何利用 Python 爬虫实现给微信群发新闻早报?(详细)...
  12. 单片机3种烧录方式解析
  13. 按不同vlan下发dhcp_【实例】交换机划分vlan,各vlan通过dhcp自动获取ip
  14. 1.什么是NoSql数据库?
  15. 分享阿里云ace考试攻略 详解ACP认证考试须知
  16. java poi 读合并单元格的内容,poi合并单元格,poi合并单元格并设置内容居中
  17. 单细胞文章解读——用单细胞RNA测序技术分析与肿瘤转移相关的细胞间通讯
  18. WorldFirst如何注册?WorldFirst收款账号注册流程!
  19. Android初级教程短信防火墙
  20. Chrome渲染分析之Rendering工具使用

热门文章

  1. flask-session组件
  2. Java操作zip压缩和解压缩文件工具类
  3. apache配置Options详解
  4. 学习Cocos2d的博客 --推荐
  5. jquery 调用ajax返回json
  6. 通用权限管理系统基类中数据库的连接
  7. 现代男人养生的10点忠告
  8. 怎么看服务器是实体机还是虚拟机,如何判断一台机器是物理机还是虚拟机
  9. 关于影响NodeManager执行MR任务constainer数量的设置问题
  10. Mutes锁_递归锁_信号量semaphore