/** * 备份短信 * * @param context */ public static void backupSms(Context context,BackupProcess backupProcess) { ContentResolver resolver = context.getContentResolver(); Uri uri = Uri.parse("content://sms/"); Cursor cursor = resolver.query(uri,new String[] { "address","date","type","body" },null,null); backupProcess.backupMax(cursor.getCount()); XmlSerializer serializer = Xml.newSerializer(); File file = new File(Environment.getExternalStorageDirectory(),"backup.xml"); bufferedoutputstream bos = null; try { bos = new bufferedoutputstream(new FileOutputStream(file)); serializer.setoutput(bos,"utf-8"); serializer.startDocument("utf-8",true); serializer.startTag(null,"smss"); int pd_progress = 0; while (cursor.movetoNext()) { Thread.sleep(500); 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"); pd_progress++; backupProcess.backupProcess(pd_progress); } cursor.close(); serializer.endTag(null,"smss"); serializer.endDocument(); } catch (FileNotFoundException e) { e.printstacktrace(); } catch (IllegalArgumentException e) { e.printstacktrace(); } catch (IllegalStateException e) { e.printstacktrace(); } catch (IOException e) { e.printstacktrace(); } catch (InterruptedException e) { e.printstacktrace(); } finally { if (bos != null) { try { bos.close(); } catch (IOException e) { e.printstacktrace(); } } } }