Android實現(xiàn)支持進度條顯示的短信備份工具類
更新時間:2021年08月19日 16:11:21 作者:C_L
這篇文章主要介紹了Android實現(xiàn)支持進度條顯示的短信備份工具類,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
使用內容提供者讀取短信內容,寫入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, 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使用百度地圖出現(xiàn)閃退及定位時顯示藍屏問題的解決方法
這篇文章主要介紹了Android使用百度地圖出現(xiàn)閃退及定位時顯示藍屏問題的解決方法,需要的朋友可以參考下2018-01-01
Android TextView實現(xiàn)帶鏈接文字事件監(jiān)聽的三種常用方式示例
這篇文章主要介紹了Android TextView實現(xiàn)帶鏈接文字事件監(jiān)聽的方法,結合實例形式分析了鏈接跳轉、setMovementMethod及布局屬性設置三種常用的實現(xiàn)方式,需要的朋友可以參考下2017-08-08
Android框架Volley之利用Imageloader和NetWorkImageView加載圖片的方法
這篇文章主要介紹了Android框架Volley之利用Imageloader和NetWorkImageView加載圖片的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-05-05
Android開發(fā)實現(xiàn)拍照功能的方法實例解析
這篇文章主要介紹了Android開發(fā)實現(xiàn)拍照功能的方法,結合實例形式較為詳細的分析了Android拍照功能的具體實現(xiàn)步驟與相關操作技巧,需要的朋友可以參考下2017-10-10

