Android发展_备份短信
短信备份的原理
短信备份的原理。是用内容提供者读取短信,然后保存。
- public class SmsBackupUtils {
- // 回调接口
- public interface SmsBackupCallback {
- /**
- * 短信备份前调用
- * @param total 短信的总条数
- */
- public void beforeSmsbackup(int total);
- /**
- * 短信调用中调用
- * @param progress 短信的进度
- */
- public void progressSmsbackup(int progress);
- }
- /**
- * 短信备份的方法,备份到xml文件里,由于xml文件跨平台性强 这是一个耗时操作,应该放在子线程中运行
- *
- * @param context 上下文
- * @param path 备份到哪个路径
- * @throws Exception
- */
- public static void smsBackup(Context context, String path,SmsBackupCallback callBack) throws Exception {
- // xml的序列化器
- XmlSerializer serializer = Xml.newSerializer();
- File file = new File(path);
- FileOutputStream fos = new FileOutputStream(file);
- // 设置參数
- serializer.setOutput(fos, "utf-8");
- // 開始
- serializer.startDocument("utf-8", true);
- serializer.startTag(null, "smss");
- ContentResolver resolver = context.getContentResolver();
- Uri uri = Uri.parse("content://sms");// 包括全部短信
- Cursor cursor = resolver.query(uri, new String[] { "address", "date",
- "type", "body" }, null, null, null);
- /*dialog.setMax(cursor.getCount());
- progressBar1.setMax(cursor.getCount());*/
- callBack.beforeSmsbackup(cursor.getCount());
- int progress = 0;
- while (cursor.moveToNext()) {
- serializer.startTag(null, "sms");
- serializer.startTag(null, "address");
- String address = cursor.getString(0);
- serializer.text(address);
- serializer.endTag(null, "address");
- serializer.startTag(null, "date");
- String date = cursor.getString(1);
- serializer.text(date);
- serializer.endTag(null, "date");
- serializer.startTag(null, "type");
- String type = cursor.getString(2);
- serializer.text(type);
- serializer.endTag(null, "type");
- serializer.startTag(null, "body");
- String body = cursor.getString(3);
- serializer.text(body);
- serializer.endTag(null, "body");
- serializer.endTag(null, "sms");
- progress++;
- /*dialog.setProgress(progress);
- progressBar1.setProgress(progress);*/
- callBack.progressSmsbackup(progress);
- SystemClock.sleep(1000);
- }
- cursor.close();
- serializer.endTag(null, "smss");
- serializer.endDocument();
- }
- }
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Android发展_备份短信的更多相关文章
- Android学习笔记_19_广播接收者 BroadcastReceiver及其应用_窃听短信_拦截外拨电话
一.广播接收者类型: 广播被分为两种不同的类型:“普通广播(Normal broadcasts)”和“有序广播(Ordered broadcasts)”. 普通广播是完全异步的,可以在同一时刻(逻辑上 ...
- Android监听系统短信数据库变化-提取短信内容
由于监听系统短信广播受到权限的限制,所以很多手机可能使用这种方式没法监听广播,从而没办法获取到系统短信,所以又重新开辟一条路. Android监听系统短信数据库内容变化使用场景: 1.监听短信数据库的 ...
- Android学习笔记之短信验证码的获取和读取
PS:最近很多事情都拖拖拉拉的..都什么办事效率啊!!! 还得吐槽一下移动运营商,验证码超过五次的时候,直接把我的手机号封闭.真是受够了. 学习笔记: 1.Android之如何获取短信验证码. 2.如 ...
- android: 接收和发送短信
8.2 接收和发送短信 收发短信应该是每个手机最基本的功能之一了,即使是许多年前的老手机也都会具备这 项功能,而 Android 作为出色的智能手机操作系统,自然也少不了在这方面的支持.每个 A ...
- android打电话、发短信实现
打电话: Intent intent = newIntent(Intent.ACTION_CALL,Uri.parse("tel:"+"156666666666" ...
- Android下调用收发短信邮件等
Android下调用收发短信邮件等 1,调web浏览器Uri myBlogUri = Uri.parse("http://xxxxx.com");returnIt = new In ...
- android 4.4删除短信
android 4.4之后非默认的短信应用已经没有办法删除短信了.像以前那样用如下方法是不会没法删除短信的(即使在xml中配置了短信的读写权限),同时也不会有报错或其他提示. public void ...
- 向android模拟器打电话发短信的简单方法
在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...
- 转载:Android自动化测试- 自动获取短信验证码
前言:android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码. 主要就是实时获取短信信息. android ...
随机推荐
- angular表单知识点
原文 https://www.jianshu.com/p/c772d143e1fc 大纲 1.对表单的理解 2.模板驱动表单(Template Driven Forms) 3.响应式表单(Reacti ...
- [CSS] Target Positional Elements Using *-Of-Type CSS pseudo-classes
Learn how to target elements based on their position inside of a parent element in relation to its s ...
- IAdjustCountOption--动态设置recycleView的itemCount(不须要改动数据源)
概述 RecycleViewUtil是新增的一个主要针对RecycleView的一个工具类.该工具类中提供了部分RecycleView可能会使用到的方法,当中也包含了一些用来增强HeaderRecyc ...
- 设置UIButton的文字显示位置、字体的大小、字体的颜色
btn.frame = CGRectMake(x, y, width, height); [btn setTitle: @"search" forState: UIControlS ...
- jquery或js 获取url参数
<script type="text/javascript"> function getUrlParam(name) { var reg = new RegExp(&q ...
- Visual Stdio 环境下使用 GSL (GNU Scientific Library)
Visual Stdio 环境下使用 GSL (GNU Scientific Library) 经測试.这里的方法不适用于VS2015. * 这篇文章有点过时了.建议从以下网址下载能够在 vs 环境下 ...
- Spark源代码阅读笔记之DiskStore
Spark源代码阅读笔记之DiskStore BlockManager底层通过BlockStore来对数据进行实际的存储.BlockStore是一个抽象类,有三种实现:DiskStore(磁盘级别的持 ...
- [RxJS] Use groupBy in real RxJS applications
This lesson will show when to apply groupBy in the real world. This RxJS operator is best suited whe ...
- js如何实现动态点击改变单元格颜色?
js如何实现动态点击改变单元格颜色? 一.总结 1.通过table的rows属性,遍历表格所有行,然后通过cells属性,遍历每一行中的单元格. 2.遍历的过程中,动态的为每一个单元格定义单击事件,改 ...
- 【u208】修复公路
Time Limit: 1 second Memory Limit: 128 MB [问题描述] A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 给出A地区的村庄数 ...