获取短信数据 并且备份

配置权限

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

动态添加权限

//针对的是android8.0以上(简单版)
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_SMS, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 3);

获取短信数据 并备份

 try {
            //获取的xml实例
            XmlSerializer serializer = Xml.newSerializer();
            //设置序列化参数
            File file = new File(Environment.getExternalStorageDirectory().getPath(), "smsInfo.xml");
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            serializer.setOutput(fileOutputStream, "utf-8");
            //开始写文档开头
            serializer.startDocument("utf-8", true);
            //开始写根节点
            serializer.startTag(null, "smss");

            //通过内容解析这查询短信数据库
            Uri uri = Uri.parse("content://sms/");
            //获取短信数据 更加严谨需要判断cursor是否为空
            Cursor cursor = getContentResolver().
                    query(uri, new String[]{"address", "date", "body"}, null, null, null);
            while (cursor.moveToNext()) {
                String address = cursor.getString(0);
                String date = cursor.getString(1);
                String body = cursor.getString(2);
                Log.i("getSmsInfo", address + date + body);
                //写sms节点
                serializer.startTag(null, "sms");
                //写address节点
                serializer.startTag(null, "address");
                serializer.text(address);
                serializer.endTag(null, "address");
                //data节点
                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");

            }
            serializer.endDocument();
        } catch (Exception e) {
            e.printStackTrace();
        }
 /*
     * 往短信数据库插入数据
     *
     * 顺带一提,从Android5.0开始,
     * 默认短信应用外的软件不能以写入短信数据库的形式(write sms)发短信,
     * 也就是说插入短信到短信数据库方法行不通了
     * */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值