Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> 系統備份 >> Android開發_備份短信

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();
	}
}

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved