内容提供者复习——短信备份
来源:互联网 发布:国外保健品网络销售 编辑:程序博客网 时间:2024/06/05 09:12
对于上一节的相亲神器,大家应该知道怎么用内容提供者去得到系统的数据 进行开发了。
其实对于大部分的URI 可以百度去得到,但是我建议自己倒弄出源码 自己去研究下。
短信URI content://sms/
短信的数据库第一个是id ,第二个是address (地址)第三个日期 (date)第四个type(类型)第五个是body(内容)
demo的思路主要是 拿到接口以后 直接查询 然后序列化到本地 储存起来 保存在SD卡 ,记住加权限还有读取短信的权限
先看实体类吧 因为查询到结果需要储存起来
package com.example.backSms.entrys;public class Smsinfo {private int id;private int type;private String address;private String body;private long date;public int getId() {return id;}public void setId(int id) {this.id = id;}public int getType() {return type;}public void setType(int type) {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 long getDate() {return date;}public void setDate(long date) {this.date = date;}public Smsinfo(int id, int type, String address, String body, long date) {super();this.id = id;this.type = type;this.address = address;this.body = body;this.date = date;}@Overridepublic String toString() {return "Smsinfo [id=" + id + ", type=" + type + ", address=" + address+ ", body=" + body + ", date=" + date + "]";}public Smsinfo() {super();}}
然后是主体类
<pre name="code" class="java">package com.example.backSms;import java.io.FileOutputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlSerializer;import com.example.backSms.entrys.Smsinfo;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.util.Xml;import android.view.View;import android.widget.Toast;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /**备份短信 * @param view */ public void btn(View view){ //查处所有短信 Uri uri = Uri.parse("content://sms/"); ContentResolver resolver = getContentResolver(); Cursor cursor = resolver.query(uri, new String[]{"_id","address","date","type","body"}, null, null, null); if (cursor!=null&&cursor.getCount()>0) { Smsinfo smsinfo=null; List<Smsinfo>list=new ArrayList<Smsinfo>(); while (cursor.moveToNext()) { smsinfo=new Smsinfo(); smsinfo.setId(cursor.getInt(0)); smsinfo.setAddress(cursor.getString(1)); smsinfo.setDate(cursor.getLong(2)); smsinfo.setType(cursor.getInt(3)); smsinfo.setBody(cursor.getString(4)); list.add(smsinfo);}cursor.close();//2.序列化到本地writeTolocal(list);} } private void writeTolocal(List<Smsinfo>smsinfos){ XmlSerializer serializer=Xml.newSerializer();//得到序列化对象 //指定输出位置 try {FileOutputStream fos=new FileOutputStream("/mnt/sdcard/sms.xml");serializer.setOutput(fos,"utf-8");serializer.startDocument("utf-8", true);serializer.startTag(null, "smss");for (Smsinfo smsinfo : smsinfos) {serializer.startTag(null, "sms");serializer.attribute(null, "id", String.valueOf(smsinfo.getId()));serializer.startTag(null, "address");serializer.text(smsinfo.getAddress());serializer.endTag(null, "address");serializer.startTag(null, "date");serializer.text(String.valueOf(smsinfo.getDate()));serializer.endTag(null, "date");serializer.startTag(null, "type");serializer.text(String.valueOf(smsinfo.getType()));serializer.endTag(null, "type");serializer.startTag(null, "body");serializer.text(smsinfo.getBody());serializer.endTag(null, "body");serializer.endTag(null, "sms");}serializer.endTag(null, "smss");serializer.endDocument();Toast.makeText(this, "序列化备份成功", 3000).show();} catch (Exception e) {// TODO Auto-generated catch blockToast.makeText(this, "备份失败", 3000).show();e.printStackTrace();} }}
0 0
- 内容提供者复习——短信备份
- 短信备份的原理——使用内容提供者
- (内容提供者)备份短信和添加短信
- 内容提供者——读取短信
- android内容提供者contentProvider_短信备份
- 4.1短信备份,利用系统短信内容提供者ContentResolver
- 短信恢复的原理——使用内容提供者
- 短信的内容提供者
- android,内容提供者,短信发送
- 内容提供者(ContentProvider)复习
- 练手小项目(5)安全卫士_利用内容提供者进行短信备份
- 练手小项目(5)安全卫士_利用内容提供者进行短信备份 修正版
- android 利用内容提供者备份短信(XML序列化器)
- 安卓1110_四大组件-ContentProvider内容提供者 备份短信 查询联系人 插入联系人
- 内容提供者——fragment
- Android——内容提供者
- Android——内容提供者
- 63.内容提供者ContentProvider--系统内容提供者(获取短信)
- eclipse优化设置
- tyvj 1050 最长公共子序列
- Window7通过samba服务共享虚拟机中Linux的目录
- new和malloc的区别
- Your content must have a ListView whose id attribute is 'android.R.id.list' 解决方法
- 内容提供者复习——短信备份
- CentOS系统安全配置指南
- object-c模型设计练习
- 你单方面能开机能看到你发了可能浪费的理念
- 11.2 DL动态加载框架、隐藏自己应用图标
- Volley本地缓存为什么有时候不会进行缓存?
- 模板方法模式
- java基础之抽象和接口
- Eclipse Building workspace.GC overhead limit exceeded 解决方法