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"/>
时间: 2024-07-30 13:48:01

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

Android中 备份短信 还原短信

备份短信 读取手机里的短信,备份成xml文件保存到SD卡上. xml文件就只有一个button控件,就不再给出xml代码了. import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.xmlpull.v1.XmlSerializer; import android.app.Activity; i

xml文件存储

模拟备份短信功能,首先要知道存短信得分为四个部分,短信体,时间,传送方式:接收/发送,还有就是电话号码. 然后我们定义一个javabean对他进行封装.然后通过stringbuffer拼接好,传入到本地sd卡中,就完成了: 短信封装类 package com.example.xmlsave; public class Mess { private String body; private String date; private String address; private String ty

备份短信

/** * 备份短信的工具方法 * @param context 上下文 * @param fos 备份到哪个文件输出流里面. * @throws Exception */ public static void backUp(Context context,FileOutputStream fos) throws Exception {//在自己的方法中使用接口 ContentResolver resolver = context.getContentResolver(); Uri uri =

Android开发_备份短信

 短信备份的原理 短信备份的原理,是用内容提供者读取短信,然后保存. public class SmsBackupUtils { // 回调接口 public interface SmsBackupCallback { /** * 短信备份前调用 * @param total 短信的总条数 */ public void beforeSmsbackup(int total); /** * 短信调用中调用 * @param progress 短信的进度 */ public void progre

Android发展_备份短信

 短信备份的原理 短信备份的原理.是用内容提供者读取短信,然后保存. public class SmsBackupUtils { // 回调接口 public interface SmsBackupCallback { /** * 短信备份前调用 * @param total 短信的总条数 */ public void beforeSmsbackup(int total); /** * 短信调用中调用 * @param progress 短信的进度 */ public void progre

使用内容提供者备份短信

1.获取短信的权限配置 1 <uses-permission android:name="android.permission.READ_SMS"/> 2 <uses-permission android:name="android.permission.WRITE_SMS"/> 2.通过内容提供者获取短信内容 1 package com.example.readsysmsm; 2 3 import java.util.ArrayList;

阿里大于短信返回XML

返回异常和成功的两种不同,XML返回直接拿alibaba_aliqin_fc_sms_num_send_response判断节点是否有这个名字 官方API地址: https://api.alidayu.com/doc2/apiDetail?spm=a3142.7629140.1999205496.19.fs37Yu&apiId=25450 <?xml version="1.0" encoding="utf-8" ?> <alibaba_al

短信的备份

package com.example.sms; import java.io.File; import java.io.FileOutputStream; import org.xmlpull.v1.XmlSerializer; import android.app.Activity; import android.content.ContentResolver; import android.content.ContentValues; import android.database.Cur

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

各种手机助手里面都包含了短信备份这一项.短信的本分主要包含四项:内容body.事件date.方式type.号码address. 短信备份~一.使用一种很笨的方式来保存短信到xml文件中,而且保存在外部存储.后续会有:短信备份~二(xml序列化器):短信备份~三(内容提供者获取短信xml备份):短信备份~四(json方式备份数据库短信).备份的方式越来越高效,比较不同存储方式. 很显然,初次介绍短信备份,以一种简单笨拙的方式,且不涉及内容提供者,虚拟10条短信. 短信的保存,要以对象的形式保存.因