码迷,mamicode.com
首页 > 其他好文 > 详细

短信的备份

时间:2017-02-20 21:31:42      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:save   query   input   nal   nbsp   logs   case   tin   miss   

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.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Xml;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
   }
 //查
   public void query(View v) {//查询手机短信
      // 1. 获取内容解析器
      ContentResolver resolver = getContentResolver();
      // 2. 指定uri
      Uri uri = Uri.parse("content://sms/");
      // 3. 查询
      Cursor cursor = resolver.query(uri, new String[] { "address", "body","read", "date", "type" }, null, null, null);
      while (cursor.moveToNext()) {
         String address = cursor.getString(0);
         String body = cursor.getString(1);
         String read = cursor.getString(2);
         String date = cursor.getString(3);
         String type = cursor.getString(4);
         SmsBean smsBean = new SmsBean(address, date, body, type, read);
         System.out.println(smsBean.toString());
      }
   }
   /**
    * 1. 读取系统短信 2. 用xml文件备份系统短信
    */
//备份
   public void backup(View v) {
      // 1. 获取内容解析器
      ContentResolver resolver = getContentResolver();
      // 2. 指定uri
      Uri uri = Uri.parse("content://sms/");
      // 3. 查询
      Cursor cursor = resolver.query(uri, new String[] { "address", "body","read", "date", "type" }, null, null, null);
      try {
         // 初始化序列化器
         XmlSerializer serializer = Xml.newSerializer();
         // 设置参数
         FileOutputStream os = new FileOutputStream(new File("/mnt/sdcard/sms.xml"));
         serializer.setOutput(os, "utf-8");
         // 写数据
         serializer.startDocument("utf-8", true);
         // 跟标签
         serializer.startTag(null, "smss");
         while (cursor.moveToNext()) {
            String address = cursor.getString(0);
            String body = cursor.getString(1);
            String read = cursor.getString(2);
            String date = cursor.getString(3);
            String type = cursor.getString(4);
            serializer.startTag(null, "sms");
            // 手机号码
            serializer.startTag(null, "address");
            serializer.text(address);
            serializer.endTag(null, "address");
            // 短信内容
            serializer.startTag(null, "body");
            serializer.text(body);
            serializer.endTag(null, "body");
            // 短信阅读状态
            serializer.startTag(null, "read");
            serializer.text(read);
            serializer.endTag(null, "read");
            // 短息收发时间
            serializer.startTag(null, "date");
            serializer.text(date);
            serializer.endTag(null, "date");
            // 短信的收发状态
            serializer.startTag(null, "type");
            serializer.text(type);
            serializer.endTag(null, "type");
            serializer.endTag(null, "sms");
         }
         serializer.endTag(null, "smss");
         serializer.endDocument();
         os.close();
         Toast.makeText(this, "短信存储成功!/mnt/sdcard/sms.xml", 0).show();
      } catch (Exception e) {
         e.printStackTrace();
         Toast.makeText(this, "失败啦,短信神器不流弊啊!", 0).show();
      }
   }
 //插
   public void insert(View v) {
      // 1. 获取内容解析器
      ContentResolver resolver = getContentResolver();
      // 2. 指定uri
      Uri uri = Uri.parse("content://sms/");
      ContentValues values = new ContentValues();
      values.put("address", "13112345678");
      values.put("read", 0);
      values.put("type", 1);
      values.put("body", "我是在代码中插入的短信");
      values.put("date", System.currentTimeMillis());
      resolver.insert(uri, values);
   }
}

//删
public void delete(View v) {
      int id = resolver.delete(uri, null, null);
   }

//改
public void updata(View v) {
      System.out.println(11);
      ContentValues values = new ContentValues();
      values.put("address", "10000");
      System.out.println(22);
      resolver.update(uri, values, "address = ? ", new String[] { "10086" });
   }
//备份还原短信  解析XML文件
public void restore(View v) {
      XmlPullParser parser = Xml.newPullParser();
      FileInputStream is;
      try {
         list = new ArrayList<MessageBean>();
         MessageBean bean = null;
         String address = null;
         String read = null;
         String date = null;
         String type1 = null;
         String body = null;;
         is = new FileInputStream(new File("/mnt/sdcard/message.xml"));
         parser.setInput(is, "utf-8");
         int type = parser.getEventType();
         while (type != XmlPullParser.END_DOCUMENT) {        
            String tag = parser.getName();
            switch (type) {
            case XmlPullParser.START_TAG:
            if(tag.equals("sms")){
                   bean = new MessageBean();
                }
                if (tag.equals("address")) {
                   address = parser.nextText();
                   bean.setAddress(address);
                } else if (tag.equals("read")) {
                   read = parser.nextText();
                   bean.setRead(read);
                } else if (tag.equals("date")) {
                   date = parser.nextText();
                   bean.setDate(date);
                } else if (tag.equals("type")) {
                   type1 = parser.nextText();
                   bean.setType(type1+"");
                } else if (tag.equals("body")) {
                   body = parser.nextText();
                   bean.setBody(body);
                   list.add(bean);
                   System.out.println(list+"-------------");
                }
                break;
            default:
                break;
            }
            type = parser.next();          
         }
         is.close();
         for (int i = 0; i < list.size(); i++) {
            ContentValues values = new ContentValues();
            values.put("address",list.get(i).getAddress());
            values.put("date", list.get(i).getDate());
            values.put("body", list.get(i).getBody());
            values.put("read", list.get(i).getRead());
            values.put("type", list.get(i).getType());
            resolver.insert(uri, values);
         }
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

package com.example.sms;
public class SmsBean {
   private String address;
   private String date;
   private String body;
   private String type;
   private String read;
   public SmsBean(String address, String date, String body, String type,String read) {
      super();
      this.address = address;
      this.date = date;
      this.body = body;
      this.type = type;
      this.read = read;
   }  
  public String getAddress() {
      return address;
   }
   public void setAddress(String address) {
      this.address = address;
   }
   public String getDate() {
      return date;
   }
   public void setDate(String date) {
      this.date = date;
   }
   public String getBody() {
      return body;
   }
   public void setBody(String body) {
     this.body = body;
   }
   public String getType() {
      return type;
   }
   public void setType(String type) {
      this.type = type;
   }
   public String getRead() {
      return read;
   }
   public void setRead(String read) {
      this.read = read;
   }
   @Override
   public String toString() {
      return "SmsBean [address=" + address + ", date=" + date + ", body="+ body + ", type=" + type + ", read=" + read + "]";
   }
}

清单文件中加相应的权限:

     <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"/>

 

短信的备份

标签:save   query   input   nal   nbsp   logs   case   tin   miss   

原文地址:http://www.cnblogs.com/loaderman/p/6421027.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!