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

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

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

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

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

先看代码吧:

 public void onClick(View v) {
         XmlSerializer serializer = Xml.newSerializer();
         File file = new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup.xml");
         try {
             FileOutputStream outputStream =   new FileOutputStream(file);
             serializer.setOutput(outputStream, "utf-8");
             serializer.startDocument("utf-8",true);
             serializer.startTag(null,"smss");

             Uri uri = Uri.parse("content://sms/");
             Cursor cursor = getContentResolver().query(uri,new String[]{"address","date","body"},null,null,null);
             if (cursor!=null){
             while (cursor.moveToNext()){
                 String address = cursor.getString(0);
                 String date = cursor.getString(1);
                 String body = cursor.getString(2);

                 try {
                     //sms节点
                     serializer.startTag(null,"sms");
                     //address节点
                     serializer.startTag(null,"address");
                     serializer.text(address);
                     serializer.endTag(null,"address");
                     //date节点
                     serializer.startTag(null,"date");
                     serializer.text(date);
                     serializer.endTag(null,"date");
                     //body节点
                     serializer.startTag(null,"body");
                     serializer.text(body);
                     serializer.endTag(null,"body");

                     serializer.endTag(null,"sms");

                 } catch (IOException e) {
                     e.printStackTrace();
                 }
                 System.out.println(address+"---"+date+"---"+body);
             }
         }
             serializer.endTag(null,"smss");
             serializer.endDocument();
             outputStream.close();
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }

     }

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

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

     <uses-permission android:name="android.permission.READ_SMS"/>
     <uses-permission android:name="android.permission.WRITE_SMS"/>
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

ContentProvider备份短信,以xml文件存储的更多相关文章

  1. android 数据存储&lt;一&gt;----android短信发送器之文件的读写(手机+SD卡)

    本文实践知识点有有三: 1.布局文件,android布局有相对布局.线性布局,绝对布局.表格布局.标签布局等,各个布局能够嵌套的. 本文的布局文件就是线性布局的嵌套 <LinearLayout ...

  2. android 数据存储----android短信发送器之文件的读写(手机+SD卡)

    本文实践知识点有有三: 1.布局文件,android布局有相对布局,线性布局,绝对布局,表格布局,标签布局等.各个布局能够嵌套的.本文的布局文件就是线性布局的嵌套 <LinearLayout x ...

  3. Android发展_备份短信

     短信备份的原理 短信备份的原理.是用内容提供者读取短信,然后保存. public class SmsBackupUtils { // 回调接口 public interface SmsBacku ...

  4. 02 . 02 . Go之Gin+Vue开发一个线上外卖应用(集成第三方发送短信和xorm生成存储数据库表)

    集成第三方发送短信 介绍 用户登录 用户登录有两种方式: 短信登录,密码登录 短信登录是使用手机号和验证码进行登录 短信平台 很多云平台,比如阿里云,腾讯云,七牛云等云厂商,向程序开发者提供了短信验证 ...

  5. WinForm中使用XML文件存储用户配置及操作本地Config配置文件

    大家都开发winform程序时候会大量用到配置App.config作为保持用户设置的基本信息,比如记住用户名,这样的弊端就是每个人一些个性化的设置每次更新程序的时候会被覆盖. 故将配置文件分两大类: ...

  6. WinForm中使用XML文件存储用户配置及操作本地Config配置文件(zt)

    因项目中采用CS结构读取Web.config文件,故参照一下的连接完成此功能,在此感谢原作者! 原文地址: http://www.cnblogs.com/zfanlong1314/p/3623622. ...

  7. 阿里大于短信返回XML

    返回异常和成功的两种不同,XML返回直接拿alibaba_aliqin_fc_sms_num_send_response判断节点是否有这个名字 官方API地址: https://api.alidayu ...

  8. Android短信备份及插入笔记

    实现备份短信到xml文件和像短信中插入一条数据 一.实现短信将备份到xml文件中 在布局文件中定义一个按钮,定义点击事件为copyClick MainActivity.java: package co ...

  9. Android简易实战教程--第八话《短信备份~一》

    各种手机助手里面都包含了短信备份这一项.短信的本分主要包含四项:内容body.事件date.方式type.号码address. 短信备份~一.使用一种很笨的方式来保存短信到xml文件中,而且保存在外部 ...

随机推荐

  1. vc6.0快捷键大全

                                                                转载! 按下Alt  键不放,点击鼠标左键拖动,可以选择文本块.可选择列:    ...

  2. 使用jlink直接烧norflash或者nandflash不借助uboot的猜想

    由于喜欢折腾,我是在linux下使用jlink的,既然JLinkExe可以进行内存读写操作,loadbin等操作,并且通过指定命令文件支持批量指令输入,那么首先jlink是可以直接访问内部存储器的,包 ...

  3. android apk 防止反编译技术第四篇-对抗JD-GUI

    又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊.好了我们利用周末的时间继续介绍android apk防止反编译技术的另一种方法.前三篇我们讲了加壳技术(http://my.oschina.net ...

  4. 以后上午就只能这样了么-jQuery

    hi 昨天睡得不错 为什么早上还是看不进论文,宁愿做这个,也不愿认真看论文.感觉上还是下午看论文感觉要好的多.不过最近有三十多篇要看哇...管球... 1.jQuery -----jQuery常用插件 ...

  5. 第14章 位图和位块传输_14.4 GDI位图对象(1)

    14.4.1 创建DDB (1)创建 HBITMAP= CreateBitmap(cx,cy,cPlanes,cBitsPixel,lpBits); 参数 说明 cx,cy 指定位图宽度和高度,单位为 ...

  6. Java的注解机制——Spring自动装配的实现原理

    http://www.cnblogs.com/Johness/archive/2013/04/17/3026689.html

  7. javascript的几个小技巧

    1.在循环中缓存array.length 这个技巧很简单,这个在处理一个很大的数组循环时,对性能影响将是非常大的.基本上,大家都会写一个这样的同步迭代的数组. for(var i=0;i<arr ...

  8. js 事件冒泡是什么如何用jquery阻止事件冒泡

    什么是事件起泡:一个事件不能凭空产生,这就是事件的发生等等,接下来为大家介绍下jquery阻止事件起泡以及关于js事件起泡的验证,感兴趣的朋友可以参考下哈       (1)什么是事件起泡 首先你要明 ...

  9. usb驱动开发14之设备生命线

    直接看代码吧. /*-------------------------------------------------------------------*/ /** * usb_submit_urb ...

  10. C# 如何定义让PropertyGrid控件显示[...]按钮,并且点击后以下拉框形式显示自定义控件编辑属性值

    关于PropertyGrid控件的详细用法请参考文献: 1.C# PropertyGrid控件应用心得 2.C#自定义PropertyGrid属性 首先定义一个要在下拉框显示的控件: using Sy ...