最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實現(xiàn)支持進度條顯示的短信備份工具類

 更新時間:2021年08月19日 16:11:21   作者:C_L  
這篇文章主要介紹了Android實現(xiàn)支持進度條顯示的短信備份工具類,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

使用內(nèi)容提供者讀取短信內(nèi)容,寫入XML文件,進度條ProgressDialog更新備份進度。

新知識點:子線程如何在在不使用Handler的情況下更新UI

/** 
 *   進行短信備份的工具類,支持進度條顯示 
 * @author lian 
 * 
 */ 
 
public class SmsBackupUtils { 
  private static class Data{ 
    int progress; 
  } 
   
  /** 
   * 
   * @param context 
   *   調(diào)用此工具類的Activity 
   * @param pd 
   *   顯示備份進度的進度條 
   */ 
  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; 
     
    //存儲路徑 
    File file = new File(Environment.getExternalStorageDirectory(), "sms.xml"); 
    try { 
      FileOutputStream fos = new FileOutputStream(file); 
      PrintWriter pw = new PrintWriter(fos); 
       
      //按照XML格式進行寫入 
      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(); 
      //備份完成,關閉進度條 
      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); 

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助。

相關文章

最新評論

德安县| 中江县| 乐山市| 红河县| 马山县| 景泰县| 景洪市| 禹城市| 四会市| 兴国县| 阿城市| 上饶市| 呼玛县| 鄯善县| 始兴县| 女性| 巴林左旗| 得荣县| 永康市| 华坪县| 手游| 依安县| 右玉县| 衡东县| 遵义县| 南宫市| 偏关县| 黄骅市| 鸡泽县| 新余市| 贺州市| 香港| 唐山市| 永清县| 永新县| 青川县| 商都县| 平原县| 当雄县| 阿图什市| 祁连县|