Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android实现支持进度条显示的短信备份工具类大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

使用内容提供者读取短信内容,写入XML文件,进度条ProgressDialog更新备份进度。
新知识点:子线程如何在在不使用Handler的情况下更新UI

/** 
 *   进行短信备份的工具类,支持进度条显示 
 * @author lian 
 * 
 */ 
 
public class SmsBACkupUtils { 
  private static class Data{ 
    int progress; 
  } 
   
  /** 
   * 
   * @param context 
   *   调用此工具类的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); 
     
    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(); 
    } 
     
     
  } 
} 

调用

pd = new ProgressDialog(this); 
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
 
SmsBACkupUtils.smsBACkup(SuperToolActivity.this,pd); 

以上就是本文的全部内容,希望对大家的学习有所帮助。

大佬总结

以上是大佬教程为你收集整理的Android实现支持进度条显示的短信备份工具类全部内容,希望文章能够帮你解决Android实现支持进度条显示的短信备份工具类所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。