• ContentProvider备份短信,以xml文件存储


    因为短信的内容已经通过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     <uses-permission android:name="android.permission.READ_SMS"/>
    2     <uses-permission android:name="android.permission.WRITE_SMS"/>
    3     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    GitHub:https://github.com/godfunc
    博客园:http://www.cnblogs.com/godfunc
    Copyright ©2019 Godfunc
  • 相关阅读:
    树的最小支配集 最小点覆盖 与 最大独立集 (图论)
    P1993 小K的农场 (差分约束)
    P1168 中位数 (优先队列,巧解)
    STL 优先队列
    P3799 妖梦拼木棒 (组合数学)
    P2389 电脑班的裁员 (动态规划)
    3-Java中基本数据类型的存储方式和相关内存的处理方式(java程序员必读经典)
    1-匿名对象
    2-封装性
    2-递归调用
  • 原文地址:https://www.cnblogs.com/Godfunc/p/6060180.html
Copyright © 2020-2023  润新知