栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android实现支持进度条显示的短信备份工具类

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android实现支持进度条显示的短信备份工具类

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

 
 
public class SmsBackupUtils { 
  private static class Data{ 
    int progress; 
  } 
   
   
  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(""); 

      //在主线程中更新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(""); 
 pw.println(""+ address +""); 
 pw.println(""+ date +""); 
 pw.println(""+ body +""); 
 pw.println(""+ type +""); 
 pw.println(""); 
  
 context.runonUiThread(new Runnable() { 
    
   @Override 
   public void run() { 
     // TODO Auto-generated method stub 
     pd.setProgress(data.progress); 
   } 
 }); 
  
      } 
      pw.println(""); 
      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); 

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/162931.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号