Android中 备份短信 还原短信

备份短信

读取手机里的短信,备份成xml文件保存到SD卡上。

xml文件就只有一个button控件,就不再给出xml代码了。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.xmlpull.v1.XmlSerializer;

import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Xml;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
	private Button bt_readsms;
	/**
	 * 短信备份的文件对象
	 */
	private File smsBackUpFile;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt_readsms = (Button) findViewById(R.id.bt_readsms);
        bt_readsms.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				try {
					//创建一个存储备份短信的文件对象
					smsBackUpFile = new File(Environment.getExternalStorageDirectory(),"sms.xml");
					
					//创建一个xml文件的生成器。
					 XmlSerializer serializer = Xml.newSerializer();
					 //完成序列化器初始化操作。
					 FileOutputStream os = new FileOutputStream(smsBackUpFile);
					 serializer.setOutput(os, "utf-8");
					//内容提供者。
					//获取到一个数据库的内容的解析者
					ContentResolver resolver = getContentResolver();
					//游标(结果集)
					Cursor cursor = resolver.query(Uri.parse("content://sms"),
							new String[]{"address","date","type","body"}, 
							null, 
							null,
							null);
					//生成xml文件的头
					serializer.startDocument("utf-8", true);
					serializer.startTag(null, "smss");
					while(cursor.moveToNext()){
						serializer.startTag(null, "sms");
						String address = cursor.getString(0);
						String date = cursor.getString(1);
						String type = cursor.getString(2);
						String body = cursor.getString(3);
						
						serializer.startTag(null, "address");
						System.out.println("短信地址:"+address);
						serializer.text(address);
						serializer.endTag(null, "address");
						
						serializer.startTag(null, "date");
						System.out.println("短信时间:"+date);
						serializer.text(date);
						serializer.endTag(null, "date");
						
						serializer.startTag(null, "body");
						System.out.println("短信内容:"+body);
						serializer.text(body);
						serializer.endTag(null, "body");
						
						serializer.startTag(null, "type");
						System.out.println("短信类型:"+type);
						serializer.text(type);
						serializer.endTag(null, "type");
						
						serializer.endTag(null, "sms");
					}
					cursor.close();
					serializer.endTag(null, "smss");
					serializer.endDocument();
					os.close();
					Toast.makeText(getApplicationContext(), "备份完成", 1).show();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
    }

   
}

还原短信

通过代码程序控制向手机发送短信,10s后手机可以接收到短信

xml文件就只有一个button控件,就不再给出xml代码了。

import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
	}

	/**
	 * 还原一条短信
	 * 
	 * @param view
	 */
	public void click(View view) {
		new Thread(){
			public void run() {
				try {
					//等待10秒钟的时间
					Thread.sleep(10000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				// 获取到一个数据库的内容的解析者
				ContentResolver resolver = getContentResolver();
				ContentValues values = new ContentValues();
				values.put("address", "95533");//指定短信的发件人
				values.put("date", System.currentTimeMillis());
				values.put("body", "尊敬的客户,您的银行卡余额还有300万");
				values.put("type", "1");
				resolver.insert(Uri.parse("content://sms"), values);
			};
		}.start();
	}
}



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。