Android實(shí)現(xiàn)支持進(jìn)度條顯示的短信備份工具類
使用內(nèi)容提供者讀取短信內(nèi)容,寫入XML文件,進(jìn)度條ProgressDialog更新備份進(jìn)度。
新知識(shí)點(diǎn):子線程如何在在不使用Handler的情況下更新UI
/** * 進(jìn)行短信備份的工具類,支持進(jìn)度條顯示 * @author lian * */ public class SmsBackupUtils { private static class Data{ int progress; } /** * * @param context * 調(diào)用此工具類的Activity * @param pd * 顯示備份進(jìn)度的進(jìn)度條 */ public static void smsBackup(Activity context,final ProgressDialog pd){ Uri uri = Uri.parse("content://sms/"); ContentResolver cr = context.getContentResolver(); //取出短信 final Cursor cursor = cr.query(uri, new String[]{"address","date","body","type"}, null, null, null); final int count = cursor.getCount(); final Data data = new Data(); data.progress = 0; //存儲(chǔ)路徑 File file = new File(Environment.getExternalStorageDirectory(), "sms.xml"); try { FileOutputStream fos = new FileOutputStream(file); PrintWriter pw = new PrintWriter(fos); //按照XML格式進(jìn)行寫入 pw.println("<smses count='" + cursor.getCount() +"'>"); //在主線程中更新UI context.runOnUiThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub pd.setMax(count); pd.show(); } }); //寫入XML文件 while(cursor.moveToNext()){ data.progress ++; String address = cursor.getString(0); String date = cursor.getString(1); String body = cursor.getString(2); String type = cursor.getString(3); //SystemClock.sleep(150); pw.println("<sms>"); pw.println("<address>"+ address +"</address>"); pw.println("<date>"+ date +"</date>"); pw.println("<body>"+ body +"</body>"); pw.println("<type>"+ type +"</type>"); pw.println("</sms>"); context.runOnUiThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub pd.setProgress(data.progress); } }); } pw.println("</smses>"); pw.flush(); pw.close(); cursor.close(); //備份完成,關(guān)閉進(jìn)度條 context.runOnUiThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub pd.dismiss(); } }); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
調(diào)用
pd = new ProgressDialog(this); pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); SmsBackupUtils.smsBackup(SuperToolActivity.this, pd);
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
- Android 下載文件通知欄顯示進(jìn)度條功能的實(shí)例代碼
- Android編程實(shí)現(xiàn)顯示在標(biāo)題上的進(jìn)度條功能【附源碼下載】
- Android實(shí)現(xiàn)標(biāo)題上顯示隱藏進(jìn)度條效果
- android多線程斷點(diǎn)下載-帶進(jìn)度條和百分比進(jìn)度顯示效果
- Android多線程+單線程+斷點(diǎn)續(xù)傳+進(jìn)度條顯示下載功能
- Android自定義多節(jié)點(diǎn)進(jìn)度條顯示的實(shí)現(xiàn)代碼(附源碼)
- Android使用AsyncTask下載圖片并顯示進(jìn)度條功能
- Android 進(jìn)度條顯示在標(biāo)題欄的實(shí)現(xiàn)方法
- Android上傳文件到服務(wù)端并顯示進(jìn)度條
- android實(shí)現(xiàn)動(dòng)態(tài)顯示隱藏進(jìn)度條
相關(guān)文章
Android使用百度地圖出現(xiàn)閃退及定位時(shí)顯示藍(lán)屏問題的解決方法
這篇文章主要介紹了Android使用百度地圖出現(xiàn)閃退及定位時(shí)顯示藍(lán)屏問題的解決方法,需要的朋友可以參考下2018-01-01DataBinding onClick的七種點(diǎn)擊方式
這篇文章主要給大家介紹了關(guān)于DataBinding onClick的七種點(diǎn)擊方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Android TextView實(shí)現(xiàn)帶鏈接文字事件監(jiān)聽的三種常用方式示例
這篇文章主要介紹了Android TextView實(shí)現(xiàn)帶鏈接文字事件監(jiān)聽的方法,結(jié)合實(shí)例形式分析了鏈接跳轉(zhuǎn)、setMovementMethod及布局屬性設(shè)置三種常用的實(shí)現(xiàn)方式,需要的朋友可以參考下2017-08-08Android框架Volley之利用Imageloader和NetWorkImageView加載圖片的方法
這篇文章主要介紹了Android框架Volley之利用Imageloader和NetWorkImageView加載圖片的實(shí)現(xiàn)方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05Android Coil對(duì)比Glide深入分析探究
這篇文章主要介紹了Android Coil對(duì)比Glide,Coil是Android上的一個(gè)全新的圖片加載框架,它的全名叫做coroutine image loader,即協(xié)程圖片加載庫(kù)2023-02-02Android開發(fā)實(shí)現(xiàn)拍照功能的方法實(shí)例解析
這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)拍照功能的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android拍照功能的具體實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-10-10