大佬教程收集整理的这篇文章主要介绍了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,请注明来意。