Android 四大组件学习之ContentProvider三
上节课学习怎样自己创建一个ContentProvider。以及用ContentResolver去操作ContentProvider。
今天我们用系统提供的ContentProvider。 先来个简单的,读取系统的短信内容。
依据上节知道。既然要读取系统的短信,那就得先找到系统的短信在那里?
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
先找到短信数据库所在的问题,然后导出,查看里面的内容
既然已经分析好了,我们须要什么,不须要什么。 当然还须要知道短信提供者给第三方的URL。
这个能够通过Android源代码查看。
那我们就写一个程序,读取系统中的短信
先看Activity中的代码:
public class ReadMessageActivity extends Activity {
Button readMessage;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_readmessage);
readMessage = (Button)findViewById(R.id.button1);
readMessage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Log.i("ReadMessageActivity", "读取联系人按钮按下了");
ContentResolver cResolver = getContentResolver();
/**
* uri: 是短信提供者的url。能够通过查看源代码获得
* projection:须要查询的几个字段,关心那个查询按个即可
*/
Cursor cursor = cResolver.query(Uri.parse("content://sms"), new String[]{"address", "date", "type", "body"}, null, null, null);
while(cursor.moveToNext())
{
String address = cursor.getString(cursor.getColumnIndex("address"));
String date = cursor.getString(cursor.getColumnIndex("date"));
String type = cursor.getString(cursor.getColumnIndex("type"));
String body = cursor.getString(cursor.getColumnIndex("body"));
Log.i("ReadMessageActivity", address + ";" + date + ";" + type + ";" + body);
}
}
});
}
}
布局文件就一个button,不做详解
打印结果为:
ok。 读取系统短信就算是简单的完毕了。
接着我们往系统中写一条短信
我们再加一个插入短信的button。然后当按下时就插入一条短信:
代码例如以下:
writeMessage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// 写短信button被按下
ContentResolver cResolver = getContentResolver();
ContentValues values = new ContentValues();
values.put("body", "对不起。您因为尾号为6789的手机号。欠费1w元,已停机!
");
values.put("address", 10086);
values.put("date", System.currentTimeMillis());
values.put("type", 1);
cResolver.insert(Uri.parse("content://sms"), values);
}
});
结果例如以下:
能够看到数据库中已经有信插入的信息,同一时候对话框中也出现了。 所以插入短信就搞定了。
Android 四大组件学习之ContentProvider三的更多相关文章
- Android 四大组件学习之ContentProvider五
上几节学习了ContentProvider的实际用途,读取短信.插入短信,读取联系人.插入联系人等. 本节课在学习ContentProvider的观察者. 在生活中有第三方的软件.比方什么短信软件.此 ...
- Android 四大组件学习之ContentProvider二
上节学习了什么是ContentProvider.以及ContentProvider的作用.以及什么是URL.本节就对上节学习的知识做一个实践,也就是定义自己的ContentProvider 好.实践是 ...
- Android 四大组件学习之BroadcastReceiver三
本节学习广播的分类. 广播分为无序广播和有序广播 无序广播: 广播发送者的action与广播接收者的action都匹配的话,所以广播介绍者都能够收到这条广播,而且没有先后顺序,能够觉得是同一时候收到 ...
- Android 四大组件学习之ContentProvider四
上节我们学习了怎样去读取系统短信以及插入一条短信到系统中. 本节我们学习怎样获取系统的联系人,以及插入一条联系人 好.废话不多说了,直接操作. 首先和读取短信一样,先找到联系人在数据库中的位置. wa ...
- android四大组件学习总结以及各个组件示例(1)
android四大组件分别为activity.service.content provider.broadcast receiver. 一.android四大组件详解 1.activity (1)一个 ...
- Android 四大组件学习之Server一
上次学习了Android四大组件Activity之后,我们深刻理解了Activity.这次我们学习四大组件Service. Service与Activity的级别是一样的,都是Android系统不可缺 ...
- Android 四大组件学习之BroadcastReceiver一
本节课学习四大组件最后一个, 广播接受者. 顾名思义广播接受者就是接受广播呗.比方在现实社会中,曾经每一个人家都有一台收音机,这可就能够去接受广播发出来的消息.大家都知道.程序世界也是參照的显示生活设 ...
- Android四大组件之一:ContentProvider(内容提供者)
Android中还提供了名为ContentProvider(内容提供者),可以向其他应用提供数据,但不常用,除非是同一公司开发的App,可以向不同应用提供数据.虽然为Android的四大组件之一,但用 ...
- android四大组件学习总结以及各个组件示例(2)
上篇博文讲解了activity.content provider,此篇博文来仔细总结service.broadcast receiver: 3. Service >什么是服务?>windo ...
随机推荐
- axis2调用webservice教训
总结教训,axis2client调用WS接口时url不能加?wsdl,而用cxf调用时则要加上. 今天用axis2的RpcServerClient调用https的webservice接口,在设置完op ...
- 网络:万维网(WWW)
ylbtech-网络:万维网(WWW) www (万维网缩写)同义词 万维网一般指www(万维网缩写)WWW是环球信息网的缩写,(亦作“Web”.“WWW”.“'W3'”,英文全称为“World Wi ...
- docker(三):Harbor 1.8.0 仓库的安装和使用
回顾: docker(一):docker是什么? docker(二):CentOS安装docker docker(部署常见应用):docker部署mysql 安装的先决条件 硬件环境 1.CPU ...
- BeautifulSoup 库的使用记录
BeautifulSoup 有何用途 如果我们需要通过脚本来抓取网络中的数据时,使用传统的字符解析等方法时是非常低效的,而BeautifulSoup则可以方便的通过接口来获取标签中所想要得到的数据.主 ...
- Javascript关于JSON集合的几种循环方法
/** * 根据json数据生成option树形控件 * 如果有children节点则自动生成树形数据 * @param {JSON} data * @param {int} n 节点深度 * @pa ...
- java_poi
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.apache. ...
- type="radio"样式修改
input[type=radio],input[type=checkbox] { display: inline-block; vertical-align: middle; width: 20px; ...
- 克隆CentOS 6.9 配置静态IP,重启网络服务时报错
克隆的CentOS 6.9 第一次开机时,VMware workstation会为新虚拟机自动生成新mac地址,导致虚拟机配置文件中mac地址与虚拟机新mac地址不一致. 解决方法:1. 修改网卡配置 ...
- 插入排序InsertSort
插入排序:从第二个数开始 一直和前面的数组比较 获得排序定位 代码 /** *插入排序 */ public class InsertSort { public static void inser ...
- 移动端开发-Day1
什么是Node? 它是一个基于Chrome v8引擎的js运行环境,采用高效轻量级的事件驱动,非阻塞式的I/O模型. 非阻塞I/O? 例如,当程序运行到某一函数时,调用后立即返回,不需要等待函数执行完 ...