編輯:系統備份

AToolActivity.java
1 protected void showSmsBackUpDialog() {
2 //1,創建一個帶進度條的對話框
3 final ProgressDialog progressDialog = new ProgressDialog(this);
4 progressDialog.setIcon(R.drawable.ic_launcher);
5 progressDialog.setTitle("短信備份");
6 //2,指定進度條的樣式為水平
7 progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
8 //3,展示進度條
9 progressDialog.show();
10 //4,直接調用備份短信方法即可
11 new Thread(){
12 @Override
13 public void run() {
14 String path = Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+"sms74.xml";
15 SmsBackUp.backup(getApplicationContext(), path, new CallBack() {
16 @Override
17 public void setProgress(int index) {
18 //由開發者自己決定,使用對話框還是進度條
19 progressDialog.setProgress(index);
20 pb_bar.setProgress(index);
21 }
22
23 @Override
24 public void setMax(int max) {
25 //由開發者自己決定,使用對話框還是進度條
26 progressDialog.setMax(max);
27 pb_bar.setMax(max);
28 }
29 });
30
31 progressDialog.dismiss();
32 }
33 }.start();
34 }
SmsBackUp.java

1 package com.itheima.mobilesafe74.engine;
2
3 import java.io.File;
4 import java.io.FileOutputStream;
5 import java.io.IOException;
6 import org.xmlpull.v1.XmlSerializer;
7 import android.content.Context;
8 import android.database.Cursor;
9 import android.net.Uri;
10 import android.util.Xml;
11
12 public class SmsBackUp {
13 private static int index = 0;
14
15 //備份短信方法
16 //ProgressDialog pd 原來的對話框
17 //現在改為進度條
18
19 //A,傳遞一個進度條所在的對話框
20 //B,傳遞一個進度條
21
22 public static void backup(Context ctx,String path,CallBack callBack) {
23 FileOutputStream fos = null;
24 Cursor cursor = null;
25 try {
26 //需要用到的對象上下文環境,備份文件夾路徑,進度條所在的對話框對象用於備份過程中進度的更新
27 //1,獲取備份短信寫入的文件
28 File file = new File(path);
29 //2,獲取內容解析器,獲取短信數據庫中數據
30 cursor = ctx.getContentResolver().query(Uri.parse("content://sms/"),
31 new String[]{"address","date","type","body"}, null, null, null);
32 //3,文件相應的輸出流
33 fos = new FileOutputStream(file);
34 //4,序列化數據庫中讀取的數據,放置到xml中
35 XmlSerializer newSerializer = Xml.newSerializer();
36 //5,給次xml做相應設置
37 newSerializer.setOutput(fos, "utf-8");
38 //DTD(xml規范)
39 newSerializer.startDocument("utf-8", true);
40
41 newSerializer.startTag(null, "smss");
42
43 //6,備份短信總數指定
44 //A 如果傳遞進來的是對話框,指定對話框進度條的總數
45 //B 如果傳遞進來的是進度條,指定進度條的總數
46 // pd.setMax(cursor.getCount());
47
48 if(callBack!=null){
49 callBack.setMax(cursor.getCount());
50 }
51
52 //7,讀取數據庫中的每一行的數據寫入到xml中
53 while(cursor.moveToNext()){
54 newSerializer.startTag(null, "sms");
55
56 newSerializer.startTag(null, "address");
57 newSerializer.text(cursor.getString(0));
58 newSerializer.endTag(null, "address");
59
60 newSerializer.startTag(null, "date");
61 newSerializer.text(cursor.getString(1));
62 newSerializer.endTag(null, "date");
63
64 newSerializer.startTag(null, "type");
65 newSerializer.text(cursor.getString(2));
66 newSerializer.endTag(null, "type");
67
68 newSerializer.startTag(null, "body");
69 newSerializer.text(cursor.getString(3));
70 newSerializer.endTag(null, "body");
71
72 newSerializer.endTag(null, "sms");
73
74 //8,每循環一次就需要去讓進度條疊加
75 index++;
76 Thread.sleep(500);
77 //ProgressDialog可以在子線程中更新相應的進度條的改變
78
79 //A 如果傳遞進來的是對話框,指定對話框進度條的當前百分比
80 //B 如果傳遞進來的是進度條,指定進度條的當前百分比
81 // pd.setProgress(index);
82
83 if(callBack!=null){
84 callBack.setProgress(index);
85 }
86 }
87 newSerializer.endTag(null, "smss");
88 newSerializer.endDocument();
89 } catch (Exception e) {
90 e.printStackTrace();
91 }finally{
92 try {
93 if(cursor!=null && fos!=null){
94 cursor.close();
95 fos.close();
96 }
97 } catch (IOException e) {
98 e.printStackTrace();
99 }
100 }
101 }
102 //回調
103 //1.定義一個接口
104 //2,定義接口中未實現的業務邏輯方法(短信總數設置,備份過程中短信百分比更新)
105 //3.傳遞一個實現了此接口的類的對象(至備份短信的工具類中),接口的實現類,一定實現了上訴兩個為實現方法(就決定了使用對話框,還是進度條)
106 //4.獲取傳遞進來的對象,在合適的地方(設置總數,設置百分比的地方)做方法的調用
107 public interface CallBack{
108 //短信總數設置為實現方法(由自己決定是用 對話框.setMax(max) 還是用 進度條.setMax(max))
109 public void setMax(int max);
110 //備份過程中短信百分比更新(由自己決定是用 對話框.setProgress(max) 還是用 進度條.setProgress(max))
111 public void setProgress(int index);
112 }
113 }
SmsBackUp
豌豆莢在哪裡可以找到備份好的文件?
有兩種方式查找您的備份文件。 方法一:請點擊豌豆莢右上角-「設置」-「自動備份」,您可以在「備份路徑」中查看和修改您的備份路徑。 方法二:請點擊豌豆莢右下角備份右邊的
卓大師刷機專家一鍵備份路徑修改
目前卓大師(刷機專家)暫時不提供更改備份路徑的功能,但是您可以手動將備份在SD/TF卡的clockworkmod/backup 目錄下的備份文件轉移到電
魅族手機通訊錄怎麼導入到小米手機上備份?
許多用戶恢復出廠設置換了手機或者手機丟失(被盜)以及系統癱瘓導致聯系電話短息無法找回,此時應該怎樣辦?下面小編來把我個人的經驗(主要針對魅族手機)簡單分享一下!第一種方法
91手機助手安卓版備份還原教程
91手機助手內置的備份還原功能,除了能夠像一般的備份軟件那樣,備份聯系人、短信、通話記錄、日程以及音樂圖片等文件資料;它更加可以備份程序軟件、游戲以及系統設置等等一系列系