Android中的短息备份器源码
来源:互联网 发布:新浪网的域名 编辑:程序博客网 时间:2024/05/29 04:44
短信的实体bean
package com.examp.backsms.domain;public class SmsInfo {private String address;private String date;private String type;private String body;public SmsInfo() {}public SmsInfo(String address, String date, String type, String body) {this.address = address;this.date = date;this.type = type;this.body = body;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getDate() {return date;}public void setDate(String date) {this.date = date;}public String getType() {return type;}public void setType(String type) {this.type = type;}public String getBody() {return body;}public void setBody(String body) {this.body = body;}@Overridepublic String toString() {return "SmsInfo [address=" + address + ", date=" + date + ", type="+ type + ", body=" + body + "]";}}
核心代码
package com.examp.backsms;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 com.examp.backsms.domain.SmsInfo;import com.examp.backsms.util.SmsUtils;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void backSms(View view) { // 创建被叫主机名 Uri uri = Uri.parse("content://sms/"); // 获取内容解析器 ContentResolver resolver = getContentResolver(); // 执行查询,得到结果集 Cursor cursor = resolver.query(uri, new String[] { "address", "date", "type", "body" }, null, null, null); //创建短信的集合 List<SmsInfo> infos = new ArrayList<SmsInfo>(); //逐一添加到集合 while (cursor.moveToNext()) { SmsInfo info = new SmsInfo(); info.setAddress(cursor.getString(cursor.getColumnIndex("address"))); info.setBody(cursor.getString(cursor.getColumnIndex("body"))); info.setDate(cursor.getString(cursor.getColumnIndex("date"))); info.setType(cursor.getString(cursor.getColumnIndex("type"))); infos.add(info); } //通过工具类调用备份的业务 //将集合|本活动的上下文传入 SmsUtils.backupSms(infos, this); cursor.close(); }}
工具类
package com.examp.backsms.util;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.examp.backsms.domain.SmsInfo;public class SmsUtils {public static void backupSms(List<SmsInfo> smsInfos, Context context) {try {// 创建XML序列化器XmlSerializer serializer = Xml.newSerializer();File file = new File(Environment.getExternalStorageDirectory(),"backupSms.xml");FileOutputStream os = new FileOutputStream(file);// 初始化xml序列化器,指定xml数据写入到那个文件,并且制定文件的编码方式serializer.setOutput(os, "utf-8");// 设置<?xml version="1.0" encoding="utf-8"?>,及是否是独立的xml文件serializer.startDocument("utf-8", true);// 相当于<smss>serializer.startTag(null, "smss");for (SmsInfo info : smsInfos) {serializer.startTag(null, "sms");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.startTag(null, "address");serializer.text(info.getAddress());serializer.endTag(null, "address");serializer.startTag(null, "date");serializer.text(info.getDate() + "");serializer.endTag(null, "date");serializer.endTag(null, "sms");}serializer.endTag(null, "smss");serializer.endDocument();os.close();Toast.makeText(context,"备份短信成功,备份储存路径为:"+ Environment.getExternalStorageDirectory()+ "backSms.xml", Toast.LENGTH_SHORT).show();} catch (Exception e) {Toast.makeText(context, "备份短信息失败!!", Toast.LENGTH_SHORT).show();e.printStackTrace();}}}
视图代码,由于只是一个案例,只有一个按钮
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="backSms" android:text="@string/bt_queryAll" /></RelativeLayout>
权限清单文件
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.examp.backsms" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <!-- 获取 读写短信的权限 --> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.WRITE_SMS" /> <!-- 获取写入SD卡的权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.examp.backsms.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
资源文件string.xml
<?xml version="1.0" encoding="utf-8"?><resources> <string name="app_name">0019短信备份</string> <string name="action_settings">Settings</string> <string name="bt_queryAll">备份短信</string></resources>
注:本代码只是事例代码,不能够承受过大的数据压力,所以实际开发的时候是边读数据边备份.
1 0
- Android中的短息备份器源码
- Android 发送短息
- 最短路径备份
- android 发送短息 权限
- android短彩信数据库设计源码解析(一)
- android短彩信数据库设计源码解析(二)
- Android短彩信源码解析-短信发送流程(一)
- Android短彩信源码解析-短信发送流程(二)
- Android短彩信源码解析-短信发送流程(三)
- FW:Android 源码分析-打电话和发短…
- android短彩信源码解析-短信发送流程
- android中的ZoomButton源码
- android源码中的编译器
- Android学习笔记2 短息发送器
- android组件之一BroadCastReceiver 短息拦截器
- 求短网址源码
- android源码中的so库源码路径
- Android 源码中的一个写法
- Struts2文件下载中文乱码解决方案
- Java Swing界面编程(14)---JTabbedPane
- 命令行cmd下获取路径的命令
- Python 标准库 urllib2 的使用细节
- [Wikioi 1021]玛丽卡(疑难题)
- Android中的短息备份器源码
- C++ enum size
- 实现上下滚动的TextView
- zencart 批量管理商品出现发现不完整的商品,解决方法
- 贝特朗齐论
- Ruby中常见的创建String的方法
- <实例>C++ 将一句话里的单词进行倒置,标点符号不倒换。
- USACO Section 5.1 Musical Themes
- 欧拉函数&&欧拉定理