短信的备份和还原
来源:互联网 发布:金鲁班软件 编辑:程序博客网 时间:2024/05/02 17:57
不多说,上代码
<span style="font-size:14px;">public class SmsUtils {//备份短信的回调接口//可以有pd,pd1,pd2,接口可以使得函数之间的耦合减小public interface BackupCallBack{////开始备份时进度条的最大值public void beforeBackup(int max);//备份过程中增加进度public void onSmsBackup(int progress);}//短信备份public static void backupSms(Context context,BackupCallBack callBack) throws Exception{ContentResolver resolver=context.getContentResolver();File file=new File(Environment.getExternalStorageDirectory(),"backupsms.xml");FileOutputStream fos=new FileOutputStream(file);//按照一定的格式,把用户短信写到xml文件里XmlSerializer serializer=Xml.newSerializer();//获取xml文件的生成器(序列化器)//初始化生成器serializer.setOutput(fos,"utf-8");serializer.startDocument("utf-9", true);//文件头<? ?>,是否独立,这是个独立的文件serializer.startTag(null, "smss");//短信组Uri uri = Uri.parse("content://sms/");//查询短信内容提供者源码,要查询所有短信Cursor cursor=resolver.query(uri, new String[]{"body", "address", "type", "date"},null,null,null);//开始备份时进度条的最大值int max=cursor.getCount();serializer.attribute(null, "max", max+"");//设置最大量属性//pd.setMax(max);callBack.beforeBackup(max);int process=0;while(cursor.moveToNext()){String body=cursor.getString(0);String address=cursor.getString(1);String type=cursor.getString(2); //1 发送 2接收String date=cursor.getString(3);serializer.startTag(null, "sms");serializer.startTag(null,"body");serializer.text(body);serializer.endTag(null, "body");serializer.startTag(null, "address");serializer.text(address);serializer.endTag(null, "address");serializer.startTag(null,"type");serializer.text(type);serializer.endTag(null,"type");serializer.startTag(null,"date");serializer.text(date);serializer.endTag(null, "date");serializer.endTag(null, "sms");//备份过程中增加进度process++;//pd.setProgress(process);callBack.onSmsBackup(process);}cursor.close();serializer.endTag(null, "smss");serializer.endDocument();fos.close();}//短信还原public static void restoreSms(Context context) throws Exception{Uri uri = Uri.parse("content://sms/");//删除已存在的短信//context.getContentResolver().delete(uri, null, null);//1 读取sd卡的xml文件File file=new File(Environment.getExternalStorageDirectory(),"backupsms.xml");FileInputStream fis=new FileInputStream(file);XmlPullParser parser=Xml.newPullParser();parser.setInput(fis, "utf-8");int eventType=parser.getEventType();String body=null;String address=null;String type=null;String date=null;ContentValues values=null; while (eventType != XmlPullParser.END_DOCUMENT) {String tagName = parser.getName();switch (eventType) {case XmlPullParser.START_TAG:System.out.println("----------------------------"); if ("body".equals(tagName)) { body=parser.nextText(); System.out.println(body);}else if ("address".equals(tagName)) {address=parser.nextText();}else if ("type".equals(tagName)) {type=parser.nextText();System.out.println(type);}else if ("date".equals(tagName)) {date=parser.nextText();System.out.println(date);}break;case XmlPullParser.END_TAG:if ("sms".equals(tagName)) {values=new ContentValues();values.put("body", body);values.put("address", address);values.put("type", type);values.put("date", date); context.getContentResolver().insert(uri, values);}break;}eventType = parser.next();} fis.close();// 2 读取max属性// 3 读取每一条短信,// 4 把短信插入到系统短信应用 // values.put("body", "woshi");// values.put("address", "131");// values.put("type", "1");// values.put("date", "1435063446839");// context.getContentResolver().insert(uri, values);}}</span>
备份和还原短信,权限READ_SMS,WRITE_SMS;
0 0
- 短信的备份和还原
- Android备份、还原通讯录和短信
- 短信备份与还原
- 短信备份与还原
- 数据库的备份和还原
- 数据库的备份和还原
- 简单的备份和还原
- Oracle的备份和还原
- mysql的备份和还原
- mysql的备份和还原
- Ubuntu的备份和还原
- db2的备份和还原
- 数据库的备份和还原
- HBase的备份和还原
- HBase的备份和还原
- MySQL的备份和还原
- mysql的备份和还原
- android短信备份与还原
- LAMP-yum安装
- 仿QQ侧滑效果(swifit)
- 网狐批量生成机器人脚本代码
- java 进制转换(利用API)
- cs硕士妹子找工作经历【阿里人搜等互联网】
- 短信的备份和还原
- 协议http pop3 ftp SMTP
- 6.25 被虐记 类模板 补充 一、类模板定义及实例化
- 內表数据导出到EXCEL-OLE示例(带格式导出)
- TransitionManager类应用
- Codeforces 553B Kyoya and Permutation
- windows 下composer的安装
- Lua: 给 Redis 用户的入门指导
- Android图像篇