备份联系人信息到sd卡上

来源:互联网 发布:2016年6月淘宝好评返现 编辑:程序博客网 时间:2024/04/29 21:18
 将联系人信息备份到sd卡上,注册以下权限:    <!--读取短信息权限-->    <uses-permission android:name="android.permission.READ_SMS"/>    <!--写入短信息权限-->    <uses-permission android:name="android.permission.WRITE_SMS"/>    <!--写入到卡权限-->    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>package com.example.readsms.domain;public class SmsInfo {private String address;private String body;private int type;public SmsInfo() {}public SmsInfo(String address, String body, int type) {super();this.address = address;this.body = body;this.type = type;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getBody() {return body;}public void setBody(String body) {this.body = body;}public int getType() {return type;}public void setType(int type) {this.type = type;}}package com.example.readsms.Utils;import java.io.File;import java.io.FileOutputStream;import java.util.List;import org.xmlpull.v1.XmlSerializer;import android.content.Context;import android.os.Environment;import android.util.Xml;import android.widget.Toast;import com.example.readsms.domain.SmsInfo;public class SmsUtils {public static void backupSmsInfos(List<SmsInfo> smsInfos, Context context) {try {XmlSerializer serializer = Xml.newSerializer();//把序列化的内容存到sd卡的根目录上FileOutputStream fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory(), "backup3.xml"));//设置要写入的文件流,以utf-8的编码形式写入到文件中serializer.setOutput(fos, "utf-8");//开始以utf-8的编码序列化文档serializer.startDocument("utf-8", true);//开始序列化标签serializer.startTag(null, "ssms");for (SmsInfo info : smsInfos) {serializer.startTag(null, "sms");serializer.startTag(null, "address");serializer.text(info.getAddress());serializer.endTag(null, "address");serializer.startTag(null, "body");serializer.text(info.getBody());serializer.endTag(null, "body");serializer.startTag(null, "type");serializer.text(info.getType() + "");serializer.endTag(null, "type");//结束序列化标签serializer.endTag(null, "sms");}//结束序列化文档serializer.endDocument();Toast.makeText(context, "备份成功...", 0).show();} catch (Exception e) {Toast.makeText(context, "备份失败...", 0).show();e.printStackTrace();}}}package com.example.readsms;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import com.example.readsms.Utils.SmsUtils;import com.example.readsms.domain.SmsInfo;public class MainActivity extends Activity implements OnClickListener {private Button readcontcat;private List<SmsInfo> smsInfos = new ArrayList<SmsInfo>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);readcontcat = (Button) findViewById(R.id.readcontcat);readcontcat.setOnClickListener(this);}@Overridepublic void onClick(View v) {//取得系统短信的路径Uri uri = Uri.parse("content://sms/");//取得内容的提供者ContentResolver resolver = getContentResolver();Cursor cursor = resolver.query(uri, new String[] { "address", "body","type" }, null, null, null);while (cursor.moveToNext()) {//取得在第0行的字符串String address = cursor.getString(0);int type = cursor.getInt(1);String body = cursor.getString(2);SmsInfo info = new SmsInfo(address, body, type);smsInfos.add(info);}cursor.close();SmsUtils.backupSmsInfos(smsInfos, this);}}全部代码:package com.example.readsms.domain;public class SmsInfo {private String address;private String body;private int type;public SmsInfo() {}public SmsInfo(String address, String body, int type) {super();this.address = address;this.body = body;this.type = type;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getBody() {return body;}public void setBody(String body) {this.body = body;}public int getType() {return type;}public void setType(int type) {this.type = type;}}package com.example.readsms.Utils;import java.io.File;import java.io.FileOutputStream;import java.util.List;import org.xmlpull.v1.XmlSerializer;import android.content.Context;import android.os.Environment;import android.util.Xml;import android.widget.Toast;import com.example.readsms.domain.SmsInfo;public class SmsUtils {public static void backupSmsInfos(List<SmsInfo> smsInfos, Context context) {try {XmlSerializer serializer = Xml.newSerializer();FileOutputStream fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory(), "backup3.xml"));serializer.setOutput(fos, "utf-8");serializer.startDocument("utf-8", true);serializer.startTag(null, "ssms");for (SmsInfo info : smsInfos) {serializer.startTag(null, "sms");serializer.startTag(null, "address");serializer.text(info.getAddress());serializer.endTag(null, "address");serializer.startTag(null, "body");serializer.text(info.getBody());serializer.endTag(null, "body");serializer.startTag(null, "type");serializer.text(info.getType() + "");serializer.endTag(null, "type");serializer.endTag(null, "sms");}serializer.endDocument();Toast.makeText(context, "备份成功...", 0).show();} catch (Exception e) {Toast.makeText(context, "备份失败...", 0).show();e.printStackTrace();}}}package com.example.readsms;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import com.example.readsms.Utils.SmsUtils;import com.example.readsms.domain.SmsInfo;public class MainActivity extends Activity implements OnClickListener {private Button readcontcat;private List<SmsInfo> smsInfos = new ArrayList<SmsInfo>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);readcontcat = (Button) findViewById(R.id.readcontcat);readcontcat.setOnClickListener(this);}@Overridepublic void onClick(View v) {Uri uri = Uri.parse("content://sms/");ContentResolver resolver = getContentResolver();Cursor cursor = resolver.query(uri, new String[] { "address", "body","type" }, null, null, null);while (cursor.moveToNext()) {String address = cursor.getString(0);int type = cursor.getInt(1);String body = cursor.getString(2);SmsInfo info = new SmsInfo(address, body, type);smsInfos.add(info);}cursor.close();SmsUtils.backupSmsInfos(smsInfos, this);}}


 

原创粉丝点击