zoukankan      html  css  js  c++  java
  • Android发展_备份短信

    

    短信备份的原理

    短信备份的原理。是用内容提供者读取短信,然后保存。

    public class SmsBackupUtils {
    
    	// 回调接口
    	public interface SmsBackupCallback {
    		/**
    		 * 短信备份前调用
    		 * @param total    短信的总条数
    		 */
    		public void beforeSmsbackup(int total);
    
    		/**
    		 * 短信调用中调用
    		 * @param progress  短信的进度
    		 */
    		public void progressSmsbackup(int progress);
    	}
    
    	/**
    	 * 短信备份的方法,备份到xml文件里,由于xml文件跨平台性强  这是一个耗时操作,应该放在子线程中运行
    	 * 
    	 * @param context 上下文
    	 * @param path 备份到哪个路径
    	 * @throws Exception
    	 */
    	public static void smsBackup(Context context, String path,SmsBackupCallback callBack) throws Exception {
    
    		// xml的序列化器
    		XmlSerializer serializer = Xml.newSerializer();
    		File file = new File(path);
    		FileOutputStream fos = new FileOutputStream(file);
    		// 设置參数
    		serializer.setOutput(fos, "utf-8");
    		// 開始
    		serializer.startDocument("utf-8", true);
    		serializer.startTag(null, "smss");
    
    		ContentResolver resolver = context.getContentResolver();
    		Uri uri = Uri.parse("content://sms");// 包括全部短信
    		Cursor cursor = resolver.query(uri, new String[] { "address", "date",
    				"type", "body" }, null, null, null);
    
    		/*dialog.setMax(cursor.getCount());
    		progressBar1.setMax(cursor.getCount());*/
    		callBack.beforeSmsbackup(cursor.getCount());
    		int progress = 0;
    		while (cursor.moveToNext()) {
    			serializer.startTag(null, "sms");
    
    			serializer.startTag(null, "address");
    			String address = cursor.getString(0);
    			serializer.text(address);
    			serializer.endTag(null, "address");
    
    			serializer.startTag(null, "date");
    			String date = cursor.getString(1);
    			serializer.text(date);
    			serializer.endTag(null, "date");
    
    			serializer.startTag(null, "type");
    			String type = cursor.getString(2);
    			serializer.text(type);
    			serializer.endTag(null, "type");
    
    			serializer.startTag(null, "body");
    			String body = cursor.getString(3);
    			serializer.text(body);
    			serializer.endTag(null, "body");
    
    			serializer.endTag(null, "sms");
    			progress++;
    			/*dialog.setProgress(progress);
    			progressBar1.setProgress(progress);*/
    			callBack.progressSmsbackup(progress);
    			
    			SystemClock.sleep(1000);
    		}
    		cursor.close();
    
    		serializer.endTag(null, "smss");
    		serializer.endDocument();
    	}
    }

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    shell脚本编程练习
    linux中()、[]、{}、(())、[[]]等各种括号的使用
    Linux Shell 变量自加
    while read line [linux] shell 学习
    踢出某正在访问的用户||永久禁止某IP访问
    linux设置 自定义脚本开机启动
    syntax error: unexpected end of file完美解决方案
    Linux利用nc命令脚本批量检测服务器指定端口是否开放
    41-贪心算法
    38-动态规划
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4713065.html
Copyright © 2011-2022 走看看