package com.itheima.mobileguard.utils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream; import org.xmlpull.v1.XmlSerializer; import android.R.integer;
import android.app.ProgressDialog;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Environment;
import android.os.SystemClock;
import android.util.Xml;
import android.widget.ProgressBar; /**
* ============================================================
* *
* 创建日期 : 2015-3-3 上午9:15:03
*
* 描 述 :
*
* 短信备份的工具类 修订历史 :
*
* ============================================================
**/
public class SmsUtils { /**
* 备份短信的接口
* @author Administrator
*
*/
public interface BackUpCallBackSms{ public void befor(int count); public void onBackUpSms(int process); } public static boolean backUp(Context context, BackUpCallBackSms callback) {
/**
* 目的 : 备份短信:
*
* 1 判断当前用户的手机上面是否有sd卡
* 2 权限 ---
* 使用内容观察者
* 3 写短信(写到sd卡)
*
*
*/ // 判断当前sd卡的状态
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
// 如果能进来就说明用户有SD卡
ContentResolver resolver = context.getContentResolver();
// 获取短信的路径
Uri uri = Uri.parse("content://sms/");
// type = 1 接收短信
// type = 2 发送短信
// cursor 表示游标的意思
Cursor cursor = resolver.query(uri, new String[] { "address",
"date", "type", "body" }, null, null, null);
//获取当前一共有多少条短信
int count = cursor.getCount();
//设置pd的最大值
// pd.setMax(count);
// progressBar1.setMax(count); callback.befor(count); //进度条默认是0
int process = 0; // 写文件
try {
// 把短信备份到sd卡 第二个参数表示名字
File file = new File(Environment.getExternalStorageDirectory(),
"backup.xml"); FileOutputStream os = new FileOutputStream(file);
// 得到序列化器
// 在android系统里面所有有关xml的解析都是pull解析
XmlSerializer serializer = Xml.newSerializer();
// 把短信序列化到sd卡然后设置编码格式
serializer.setOutput(os, "utf-8");
// standalone表示当前的xml是否是独立文件 ture表示文件独立。yes
serializer.startDocument("utf-8", true);
// 设置开始的节点 第一个参数是命名空间。第二个参数是节点的名字
serializer.startTag(null, "smss");
//设置smss节点上面的属性值 第二个参数是名字。第三个参数是值
serializer.attribute(null, "size", String.valueOf(count));
// 游标往下面进行移动
while (cursor.moveToNext()) {
System.err.println("----------------------------");
System.out.println("address = " + cursor.getString(0));
System.out.println("date = " + cursor.getString(1));
System.out.println("type = " + cursor.getString(2));
System.out.println("body = " + cursor.getString(3)); serializer.startTag(null, "sms"); serializer.startTag(null, "address");
// 设置文本的内容
serializer.text(cursor.getString(0)); serializer.endTag(null, "address"); serializer.startTag(null, "date"); serializer.text(cursor.getString(1)); serializer.endTag(null, "date"); serializer.startTag(null, "type"); serializer.text(cursor.getString(2)); serializer.endTag(null, "type"); serializer.startTag(null, "body"); //读取短信的内容
/**
* 加密:第一个参数表示加密种子(密钥)
* 第二个参数表示加密的内容
*/
serializer.text(Crypto.encrypt("123", cursor.getString(3))); serializer.endTag(null, "body"); serializer.endTag(null, "sms");
//序列化完一条短信之后就需要++
process++; // pd.setProgress(process);
//
// progressBar1.setProgress(process); callback.onBackUpSms(process); SystemClock.sleep(200); }
cursor.close(); serializer.endTag(null, "smss"); serializer.endDocument(); os.flush(); os.close(); return true; } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } return false;
} }

XmlSerializer 短信备份的更多相关文章

  1. Android项目实战--手机卫士18--读取用户的短信内容以及短信备份

    我们今天要说的就是我们手机卫士里面的高级工具里面的短信备份功能啦,其实这个软件备份的功能也很简单,就是把用户的短信读出来,然后写到一个xml或者数据库里面, 但我们这里的是读取到xml里面的. 首先我 ...

  2. Android开发遇到短信备份失败

    今天做了一个有关ContentProvider的短信备份的小案例,遇到短信备份失败,费了一番周折后终于找到了问题所在 该案例是将短信写到一个xml文件然后保存在手机存储中实现短信的备份功能,关键实现代 ...

  3. Android简易实战教程--第十三话《短信备份和还原~三》

    之前写过短信备份的小案例,哪里仅仅是虚拟了几条短信信息.本篇封装一个业务类,且直接通过内容提供者,访问本系统的短信信息,再提供对外接口.如果想要短信备份和短信还原,直接复制这段代码即可.对于您调用这个 ...

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

    各种手机助手里面都包含了短信备份这一项.短信的本分主要包含四项:内容body.事件date.方式type.号码address. 短信备份~一.使用一种很笨的方式来保存短信到xml文件中,而且保存在外部 ...

  5. Android简易实战教程--第九话《短信备份~二》

    这一篇,承接地八话.使用高效的方式备份短信--xml序列化器. 存储短信,要以对象的方式存储.首先创建javabean: package com.itydl.createxml.domain; pub ...

  6. Android短信备份及插入笔记

    实现备份短信到xml文件和像短信中插入一条数据 一.实现短信将备份到xml文件中 在布局文件中定义一个按钮,定义点击事件为copyClick MainActivity.java: package co ...

  7. android101 获取、备份、插入短信

    package com.itheima.getsms; import java.io.File; import java.io.FileNotFoundException; import java.i ...

  8. Android(java)学习笔记247:ContentProvider使用之利用ContentProvider备份和还原手机短信(掌握)

    1.通过阅读系统源码我们知道: 短信的内容提供者: content://sms/            系统短信的内容提供者的路径 2. 利用ContentProvider备份和还原手机短信: (1) ...

  9. Android(java)学习笔记191:ContentProvider使用之利用ContentProvider备份和还原手机短信(掌握)

    1. 通过阅读系统源码我们知道: 短信的内容提供者: content://sms/            系统短信的内容提供者的路径 2. 利用ContentProvider备份和还原手机短信: (1 ...

随机推荐

  1. usb-host一步一步学(一)安卓在usb-host模式下列出当前连接的usb设备

    在本次尝试中,我的安卓手机(HTC One X) 通过OTG线作为usb主机模式列出当前插入的usb设备,版本要求minSDKVersion="12". 没有外设的情况下,结果如下 ...

  2. magento新增商品属性以及将属性加入Flat table

    magento的EAV模型非常强大且灵活,但是如果不做优化的话,性能会非常低,因为attributes都存放在附表里,要获取一个entity的attribute,需要表联结一次,如果需要获取多条att ...

  3. webpack源码之ast简介

    什么是AST 树是一种重要的数据结构,由根结点和若干颗子树构成的. 根据结构的不同又可以划分为二叉树,trie树,红黑树等等.今天研究的对象是AST,抽象语法树,它以树状的形式表现编程语言的语法结构, ...

  4. 符号替换问题:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

    public class Solution { public String replaceSpace(StringBuffer str) { String str1=str.toString(); c ...

  5. 【干货】JavaScript DOM编程艺术学习笔记4-6

    四.案例研究:JavaScript图片库 js: function showPic(whichpic){ //取得链接 var source=whichpic.getAttribute("h ...

  6. sql server 2012安装程序图

    重点:下面的安装步骤都在断网环境下安装的 因为我想查看联网跟没有联网SQL2012会不会下载并安装.net2.0 和.net3.5和.net4和SP1补丁包 我的环境: 没有集成SP1补丁包的安装包大 ...

  7. Samuraiwtf-的确是很好的渗透学习平台

    有人问我要渗透测试平台学习,我想到了Samurai ,记得里面带有很多的,这里来推广一下. Samurai Web 测试框架很多人说是live CD测试环境,但是现在似乎不是了,至少目前最新版的只有这 ...

  8. yii相关手册文档

    1.Yii官方手册 Yii Framework 2.0 权威指南:http://www.yiichina.com/doc/guide/2.0/start-databases 2.yii高级应用程序手册 ...

  9. Head First Python 读书笔记

    记录一下这段时间看<Head First Python>记录的一些小知识,只是记了很少一部分,有需要的话以后再添加吧. for循环的使用: for 目标标识符 in 列表: 处理代码 if ...

  10. 2018.6.13 Java语言基础复习总结

    Java语言基础与面向对象编程实践 第一章 初识Java 1.1机器语言 机器语言是指一台计算机全部的指令集合.机器语言室友0和1组成的二进制数,是一串串由0和1组成的指令序列,可将这些指令序列交给计 ...