日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

短信备份(原)

發(fā)布時間:2024/7/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 短信备份(原) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

昨天在學(xué)習(xí)回調(diào)的時候,發(fā)現(xiàn)了其獨特的魅力之處,它將業(yè)務(wù)代碼邏輯和我們的工具類耦合性大大降低了。

應(yīng)用場景:在實際開發(fā)中,經(jīng)常會隨著用戶的需求的改變而對對話框的樣式進行相應(yīng)修改,在短信的備份過程中,往往需要給用戶顯示一個對話框,以提示用戶進度。

常見的回調(diào)的步驟分為4步:

//1,定義一個接口
//2,定義業(yè)務(wù)邏輯的抽象2個方法
//3,傳遞一個實現(xiàn)了第一步接口的實現(xiàn)類的對象進來(實現(xiàn)了未實現(xiàn)的抽象方法(將抽象的邏輯具體話))
//4,在合適的地方去調(diào)用實現(xiàn)類對象中,已經(jīng)實現(xiàn)好的方法

代碼如下:

1 public class SmsUtil { 2 private static Cursor cursor; 3 private static FileOutputStream fos; 4 private static int index = 0; 5 /** 6 * @param path 備份到的文件路徑 7 * @param ctx 上下文環(huán)境 8 * @param pd 顯示進度條的對話框 9 */ 10 public static void backUp(String path,Context ctx,SmsCallBack callBack) { 11 //1,在指定路徑下去創(chuàng)建文件 12 File file = new File(path); 13 try { 14 fos = new FileOutputStream(file); 15 16 //2,準(zhǔn)備要備份的數(shù)據(jù),內(nèi)容解析者要上下文環(huán)境 17 cursor = ctx.getContentResolver().query(Uri.parse("content://sms/"), 18 new String[]{"address","date","type","body"}, 19 null, null, null); 20 //設(shè)置對話框中進度條100%短信條數(shù) 21 if(callBack!=null){ 22 callBack.setMax(cursor.getCount()); 23 } 24 25 //3,獲取xml的序列化器,做寫入xml節(jié)點操作 26 XmlSerializer newSerializer = Xml.newSerializer(); 27 //向那個文件寫入數(shù)據(jù) 28 newSerializer.setOutput(fos,"utf-8"); 29 newSerializer.startDocument("utf-8", true); 30 //設(shè)置跟節(jié)點(名空間,名稱) 31 newSerializer.startTag(null, "smss"); 32 while(cursor.moveToNext()){ 33 //在循環(huán)遍歷過程中,獲取每一條短信,四個字段,對應(yīng)著就是xm中的一個節(jié)點 34 newSerializer.startTag(null, "sms"); 35 36 newSerializer.startTag(null, "address"); 37 newSerializer.text(cursor.getString(cursor.getColumnIndex("address"))); 38 newSerializer.endTag(null, "address"); 39 40 newSerializer.startTag(null, "date"); 41 newSerializer.text(cursor.getString(cursor.getColumnIndex("date"))); 42 newSerializer.endTag(null, "date"); 43 44 newSerializer.startTag(null, "type"); 45 newSerializer.text(cursor.getString(cursor.getColumnIndex("type"))); 46 newSerializer.endTag(null, "type"); 47 48 newSerializer.startTag(null, "body"); 49 newSerializer.text(cursor.getString(cursor.getColumnIndex("body"))); 50 newSerializer.endTag(null, "body"); 51 52 newSerializer.endTag(null, "sms"); 53 54 //疊加進度條百分比 55 index++; 56 57 if(callBack!=null){ 58 //設(shè)置對話框的最大進度 59 callBack.setProgress(index); 60 } 61 62 Thread.sleep(500); 63 } 64 newSerializer.endTag(null, "smss"); 65 newSerializer.endDocument(); 66 } catch (Exception e) { 67 e.printStackTrace(); 68 }finally{ 69 try { 70 if(cursor!=null && fos!=null){ 71 cursor.close(); 72 fos.close(); 73 } 74 } catch (IOException e) { 75 e.printStackTrace(); 76 } 77 } 78 } 79 public interface SmsCallBack{ 80 //1,設(shè)置總進度方法 81 public void setMax(int max); 82 //2,設(shè)置當(dāng)前進度的方法 83 public void setProgress(int progress); 84 } 85 } View Code

這樣在調(diào)用工具類實現(xiàn)短信備份功能的時候,就可以很方便的自定義對話框樣式,而不需要再去修改業(yè)務(wù)邏輯。

SmsUtil.backup(sdPath, getApplicationContext(),new SmsCallBack() {public void setProgress(int progress) {}public void setMax(int max) {}、});

  

轉(zhuǎn)載于:https://www.cnblogs.com/adv-qbj/p/4719794.html

總結(jié)

以上是生活随笔為你收集整理的短信备份(原)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。