android短信备份与还原
2014-04-07 19:35
148 查看
获取手机内短信内容
把短信内容写入到xml文件中
从文件还原短信
还原短信
public List<SmsInfo> getSmsInfosFromPhone(){ List<SmsInfo> infos=new ArrayList<SmsInfo>(); Uri uri=Uri.parse("content://sms"); Cursor c=context.getContentResolver().query(uri, new String[]{"address","date","type","body"}, null, null, null); while(c.moveToNext()){ String address=c.getString(c.getColumnIndex("address")); String date=c.getString(c.getColumnIndex("date")); String type=c.getString(c.getColumnIndex("type")); String body=c.getString(c.getColumnIndex("body")); SmsInfo info=new SmsInfo(address, date, type, body); infos.add(info); } c.close(); return infos; }
把短信内容写入到xml文件中
public void backupSms(List<SmsInfo> smss) throws Exception{ XmlSerializer serializer=Xml.newSerializer(); File file=new File(Environment.getExternalStorageDirectory()+"/HuiGui/backup","smsbackup.xml"); if(!file.exists()){ file.createNewFile(); } OutputStream os=new FileOutputStream(file); serializer.setOutput(os, "UTF-8"); serializer.startDocument("UTF-8", true); serializer.startTag(null, "smsinfos"); for(SmsInfo info:smss){ serializer.startTag(null, "smsinfo"); serializer.startTag(null, "address"); serializer.text(info.getAddress()); serializer.endTag(null, "address"); serializer.startTag(null, "date"); serializer.text(info.getDate()); serializer.endTag(null, "date"); serializer.startTag(null, "type"); serializer.text(info.getType()); serializer.endTag(null, "type"); serializer.startTag(null, "body"); serializer.text(info.getBody()); serializer.endTag(null, "body"); serializer.endTag(null, "smsinfo"); } serializer.endTag(null, "smsinfos"); serializer.endDocument(); os.close(); }
从文件还原短信
public List<SmsInfo> getSmsInfosFromSD() throws Exception{ List<SmsInfo> infos=null; SmsInfo smsinfo=null; XmlPullParser parser=Xml.newPullParser(); File file=new File(Environment.getExternalStorageDirectory()+"/HuiGui/backup","smsbackup.xml"); InputStream fis=new FileInputStream(file); parser.setInput(fis, "UTF-8"); int eventType=parser.getEventType(); while(eventType!=XmlPullParser.END_DOCUMENT){ switch(eventType){ case XmlPullParser.START_TAG: if("smsinfos".equals(parser.getName())){ infos=new ArrayList<SmsInfo>(); }else if("smsinfo".equals(parser.getName())){ smsinfo=new SmsInfo(); }else if("address".equals(parser.getName())){ String address=parser.nextText(); smsinfo.setAddress(address); }else if("date".equals(parser.getName())){ String date=parser.nextText(); smsinfo.setDate(date); }else if("type".equals(parser.getName())){ String type=parser.nextText(); smsinfo.setType(type); }else if("body".equals(parser.getName())){ String body=parser.nextText(); smsinfo.setBody(body); } break; case XmlPullParser.END_TAG: if("smsinfo".equals(parser.getName())){ infos.add(smsinfo); smsinfo=null; } break; } eventType=parser.next(); } return infos; }
还原短信
private void restoreSms(){ new Thread(){ public void run() { try { Uri uri=Uri.parse("content://sms"); getContentResolver().delete(uri, null, null); mpd.setTitle("正在还原短信..."); List<SmsInfo> smss=smsOperation.getSmsInfosFromSD(); mpd.setMax(smss.size()); for(SmsInfo sms:smss){ ContentValues values=new ContentValues(); values.put("address", sms.getAddress()); values.put("date", sms.getDate()); values.put("type", sms.getType()); values.put("body", sms.getBody()); getContentResolver().insert(uri, values); SystemClock.sleep(2000); mpd.incrementProgressBy(1); } mpd.dismiss(); Looper.prepare(); Toast.makeText(getApplicationContext(), "短信还原成功!", Toast.LENGTH_SHORT).show(); Looper.loop(); } catch (Exception e) { e.printStackTrace(); mpd.dismiss(); Looper.prepare(); Toast.makeText(getApplicationContext(), "短信还原未成功。。。", Toast.LENGTH_SHORT).show(); Looper.loop(); } }; }.start(); }
相关文章推荐
- android调用平台功能
- 首届 Google 暑期大学生博客分享大赛——2010 Andriod 篇——Android项目总结
- cmd 命令执行android avd 创建,安装apk
- Android问题:生成java错误日志文件包含VM Mutex/Monitor currently owned by a thread: None
- Android 2.2之opencore分析
- Android 使用Intent启动常用的应用与服务(转)
- android的日历制作(网址)
- Android软件开发之获取通讯录联系人信息(二十九)
- Android Bundle类
- Android系统文件夹结构
- Android 视频播放器截屏功能实现讲解
- android编程中的琐碎知识点汇总(3)
- android TabHost 使用
- Android控件组合应用二
- Android平板电脑应用开发的技巧
- android Intent
- Android+Audio+相关类
- 避免Android开发中的ANR
- 做了一个android小应用LEDTorch
- android 虚拟机设置屏幕尺寸(800 * 480的)