zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    VBS处理AD帐号密码到期提醒的脚本[zt]
    简单几步手工扩容LVM、缩小LVM及移除磁盘(笔记)
    python加入进度条:tqdm 和 progressbar
    python的map和reduce函数
    python的lambda表达式
    python的推导式 —— 列表推导式、集合和字典推导式
    Pyspark中遇到的 java.io.IOException: Not a file 和 pyspark.sql.utils.AnalysisException: 'Table or view not found
    pyecharts绘制map地图
    pyecharts绘制geo地图
    sklearn.feature_extraction.text 的TfidfVectorizer函数
  • 原文地址:https://www.cnblogs.com/Godfunc/p/6060180.html
Copyright © 2011-2022 走看看