android ContentProvider访问、备份、插入短信
2017-05-10 09:12
239 查看
/*
* 短信的provider
* <provider>
* android:name="SmsProvider"
* android:authorities="sms"
* android:multiprocess="true"
* android:readPermission="android.permission.READ_SMS"
* android:wirtePermission="android.permission.WRITE_SMS"
* </provider>
*
* */
public class MainActivity extends AppCompatActivity {
private List<Sms> smsList=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void querySms(View view){
ContentResolver resolver=getContentResolver();
//通过查看smsProvider的代码子路径查询所有authorities传null
Uri uri= Uri.parse("content://sms");
String[] project={"address","date","body"};
Cursor cursor=resolver.query(uri,project,null,null,null);
System.out.println("----------"+cursor.getColumnCount());
while (cursor.moveToNext()) {
Sms sms =new Sms();
String address=cursor.getString(0);
String date=cursor.getString(1);
String body=cursor.getString(2);
sms.body=body;
sms.address=address;
sms.date=date;
smsList.add(sms);
System.out.println(address+"---"+date+"---"+body);
}
for (Sms sms:smsList) {
System.out.println(sms);
}
}
/**
* @param view
* 备份短信
*/
public void backupSms(View view){
//获取XML序列化器
XmlSerializer serializer= Xml.newSerializer();
try {
//给xml序列化器设置输出
serializer.setOutput(openFileOutput("sms.xml",MODE_PRIVATE),"utf-8");
//写文档开始的标记<?xml version="1.0" encoding="utf-8"?>
serializer.startDocument("utf-8",true);
// 开始标签
serializer.startTag(null,"SmsList");
for (Sms sms : smsList) {
serializer.startTag(null,"sms");
//标签的节点
serializer.startTag(null,"address");
serializer.text(sms.address);
serializer.endTag(null,"address");
//标签的节点
serializer.startTag(null,"date");
serializer.text(sms.date);
serializer.endTag(null,"date");
//标签的节点
serializer.startTag(null,"body");
serializer.text(sms.body);
serializer.endTag(null,"body");
serializer.endTag(null,"sms");
}
serializer.endTag(null, "SmsList");
serializer.endDocument();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param view
* 插入短信一般不会有这样的权限自己玩
*/
public void insert(View view){
ContentResolver resolver=getContentResolver();
Uri uri=Uri.parse("content://sms");
ContentValues values=new ContentValues();
values.put("date",System.currentTimeMillis());
values.put("address",95555);
values.put("body","您的尾号为888的金卡工资入账");
resolver.insert(uri,values);
}
}
public class Sms {
public String date;
public String address;
public String body;
@Override
public String toString() {
return "Sms [date="+date+",address="+address+",body="+body+"]";
}
}
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
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"
android:orientation="vertical"
tools:context="com.example.zhongtao.day11.MainActivity">
<Button
android:text="查询短信"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/querySms"
android:onClick="querySms"
/>
<Button
android:text="备份短信"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/backup"
android:onClick="backupSms"
/>
<Button
android:text="插入短信"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/insert"
android:onClick="backupSms"
/>
</LinearLayout>
* 短信的provider
* <provider>
* android:name="SmsProvider"
* android:authorities="sms"
* android:multiprocess="true"
* android:readPermission="android.permission.READ_SMS"
* android:wirtePermission="android.permission.WRITE_SMS"
* </provider>
*
* */
public class MainActivity extends AppCompatActivity {
private List<Sms> smsList=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void querySms(View view){
ContentResolver resolver=getContentResolver();
//通过查看smsProvider的代码子路径查询所有authorities传null
Uri uri= Uri.parse("content://sms");
String[] project={"address","date","body"};
Cursor cursor=resolver.query(uri,project,null,null,null);
System.out.println("----------"+cursor.getColumnCount());
while (cursor.moveToNext()) {
Sms sms =new Sms();
String address=cursor.getString(0);
String date=cursor.getString(1);
String body=cursor.getString(2);
sms.body=body;
sms.address=address;
sms.date=date;
smsList.add(sms);
System.out.println(address+"---"+date+"---"+body);
}
for (Sms sms:smsList) {
System.out.println(sms);
}
}
/**
* @param view
* 备份短信
*/
public void backupSms(View view){
//获取XML序列化器
XmlSerializer serializer= Xml.newSerializer();
try {
//给xml序列化器设置输出
serializer.setOutput(openFileOutput("sms.xml",MODE_PRIVATE),"utf-8");
//写文档开始的标记<?xml version="1.0" encoding="utf-8"?>
serializer.startDocument("utf-8",true);
// 开始标签
serializer.startTag(null,"SmsList");
for (Sms sms : smsList) {
serializer.startTag(null,"sms");
//标签的节点
serializer.startTag(null,"address");
serializer.text(sms.address);
serializer.endTag(null,"address");
//标签的节点
serializer.startTag(null,"date");
serializer.text(sms.date);
serializer.endTag(null,"date");
//标签的节点
serializer.startTag(null,"body");
serializer.text(sms.body);
serializer.endTag(null,"body");
serializer.endTag(null,"sms");
}
serializer.endTag(null, "SmsList");
serializer.endDocument();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param view
* 插入短信一般不会有这样的权限自己玩
*/
public void insert(View view){
ContentResolver resolver=getContentResolver();
Uri uri=Uri.parse("content://sms");
ContentValues values=new ContentValues();
values.put("date",System.currentTimeMillis());
values.put("address",95555);
values.put("body","您的尾号为888的金卡工资入账");
resolver.insert(uri,values);
}
}
public class Sms {
public String date;
public String address;
public String body;
@Override
public String toString() {
return "Sms [date="+date+",address="+address+",body="+body+"]";
}
}
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
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"
android:orientation="vertical"
tools:context="com.example.zhongtao.day11.MainActivity">
<Button
android:text="查询短信"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/querySms"
android:onClick="querySms"
/>
<Button
android:text="备份短信"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/backup"
android:onClick="backupSms"
/>
<Button
android:text="插入短信"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/insert"
android:onClick="backupSms"
/>
</LinearLayout>
相关文章推荐
- 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)
- Android ContentProvider 查询备份插入短信
- Android-插入短信及备份手机中的短信到SD卡
- android内容提供者contentProvider_短信插入
- Android(java)学习笔记247:ContentProvider使用之利用ContentProvider备份和还原手机短信(掌握)
- Android开发之调用系统的ContentProvider——短信的获取和备份
- android内容提供者contentProvider_短信备份
- Android核心基础-5.Android 数据存储与访问-4.ContentProvider 内容提供者-示例(监听短信)
- android101 获取、备份、插入短信
- Android复习练习十三(ContentProvider备份系统短信)
- Android学习篇章39-ContentProvider-获取短信数据
- android中通过contentprovider访问通讯录代码实现(两种方法实现)
- Android短信管家视频播放器代码备份
- Android_ContentProvider_访问通讯录
- Android学习 —— 数据的存储与访问方式四: ContentProvider
- Android 短信备份
- Android项目实战--手机卫士18--读取用户的短信内容以及短信备份
- Android--ContentProvider跨程序访问数据
- Android备份、还原通讯录和短信
- Android之插入通话记录,短信箱插入短信,号码薄插入联系人