第九天 内容提供者 ContentResolver
重点:理解ContentProvider 的作用和创建流程
1. 内容提供者,提供 其他数据库的访问。
特点
- 描述 : 它是android 四大组件之一,需要androidManifestxml 注册,没有界面,为第三方的应用提供访问数据的标准接口
- 作用 : 1. 共享数据给第三方应用 2. 统一数据访问的平台
- 线程安全的问题 : 内容提供者是线程安全的 ,内容提供者是单例模式 ,且对相应的接口方法实现了同步锁(synchronized) ,由 内容访问者和内容提供者共同维护线程安全
内容提供者需要在配置清单中 配置
<provider android:name=""
android:authorities=""
android:exported="true"></provider>
2.通过ContentProvider共享数据实现流程
* 准备要共享的数据,一般就是sqlite数据库
* 编写类,继承ContentProvider ,并且实现相应的接口方法(增删改查、getType: 获取要访问的数据的MIME类型(*/image,*/video,text/plain ))
* 内容提供者在AndroidManifest.xml注册,并且设置 认证或者权限 ,android:authories (它是该内容提供者的唯一标识)
* 第三方应用通过内容解决者来访问 ContentProvider
ContentResolver resolver=Content().getContentResolver()
- 增上改查
public void onClick(View v) {
// TODO Auto-generated method stub
ContentResolver cr = getContentResolver();
switch (v.getId()) {
case R.id.save:
Cursor cur = cr.query(Uri.parse("content://sms"), new String[]{"address","date","type","body"} , null, null, null);
while(cur.moveToNext()){
String address = cur.getString();
String date = cur.getString();
String type = cur.getString();
String body = cur.getString();
System.out.println(address + "--" + date + "--" + type+ "--"+ body );
}
break;
case R.id.insert:
ContentValues cv = new ContentValues();
cv.put("address", );
cv.put("date", System.currentTimeMillis() );
cv.put("type", );
cv.put("body", "你已转账1,000,000元");
cr.insert(Uri.parse("content://sms"), cv);
break;
}
}
3.常用的API
1. Uri :统一资源标识符,它比url更细粒度 ,可以标识 数据库中的表的记录的某个字段
作用: 表示你要操作的数据
2. UriMatch :匹配Uri 地址
3. ContentUris :内容Uri :主要解析id或者拼id
4.访问系统提供的内容提供者
- uri:content://sms : 短信
字段: "_id", "address", "body", "read", "date", "type", "protocol"
- Uri:content://call_log/calls :通话记录
字段:_id、number、date、duration
通话记录权限
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
第九天 内容提供者 ContentResolver的更多相关文章
- 内容提供者 ContentResolver 数据库 示例 -2
MainActivity public class MainActivity extends ListActivity { // 访问内容提供者时需要的主机名称 public stat ...
- 内容提供者 ContentResolver 数据库 示例 -1
MainActivity public class MainActivity extends ListActivity { private TextView tv_info; priv ...
- android100 自定义内容提供者
#ContentProvider,就是来操作数据的,增删改查, * 四大组件之一 * 应用的数据库是不允许其他应用访问的 * 内容提供者的作用就是让别的应用访问到你的数据库 * 内容提供者的作用:把私 ...
- Android开发学习—— ContentProvider内容提供者
* 应用的数据库是不允许其他应用访问的* 内容提供者的作用就是让别的应用访问到你的数据库.把私有数据暴露给其他应用,通常,是把私有数据库的数据暴露给其他应用. Uri:包含一个具有一定格式的字符串的对 ...
- Android学习---通过内容提供者(ContentProvider)操作另外一个应用私有数据库的内容
一.什么是ContentProvider? ContentProvider直译过来就是内容提供者,主要作用就是A应用提供接口给B应用调用数据,和之前介绍的sharedPreference和直接开放文件 ...
- 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)
1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/and ...
- Android应用开发基础之九:内容提供者(ContentProvider)
内容提供者 应用的数据库是不允许其他应用访问的 内容提供者的作用:就是让别的应用访问到你的数据库 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查数据库的代 ...
- 安卓第十四天笔记-内容提供者(ContentProvider)
安卓第十四天笔记-内容提供者(ContentProvider) ContentProvider--内容提供者 1.ContentProvider简介 ContentProvider是不同应用程序之间进 ...
- Android组件系列----ContentProvider内容提供者
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
随机推荐
- NY-字符串替换
描述编写一个程序实现将字符串中的所有"you"替换成"we" 输入 输入包含多行数据 每行数据是一个字符串,长度不超过1000 数据以EOF结束 输出 对于输入 ...
- 第七周PSP
团队项目PSP 一:表格 C类型 C内容 S开始时间 E结束时间 I时间间隔 T净时间(mins) 预计花费时间(mins) 讨论 讨论用户界面 8:20 10:34 20 58 68 分析与 ...
- Cocos2dx淌坑日记:粒子系统PositionType的正确使用
Cocos2dx中的粒子系统,有三种定位方式,对应于不同需求. 之前我有一个想做的效果,是类似彗星的扫尾.但是当父节点也就是CCLayer跟着物体移动的时候,发现尾巴并没有跟随CCLayer移动,而是 ...
- [转]MongoDB学习 C#驱动操作MongoDB
下载驱动 驱动的下载有两种方式:一种是在C#项目中通过NuGet进行安装,另一种是通过下面的链接:https://github.com/mongodb/mongo-csharp-driver/rele ...
- [LeetCode]题解(python):116 Populating Next Right Pointers in Each Node
题目来源 https://leetcode.com/problems/populating-next-right-pointers-in-each-node/ Given a binary tree ...
- Linux下查看某个软件安装路径
1:如果包是通过yum或者rpm方式安装 [root@localhost yum.repos.d]# rpm -qa //找出系统所有的包,找到对应的文件名 [root@localhost yum.r ...
- echo 输入指定空白字符
ansible-direc:~ # echo -n "starting service....";echo -ne "\033[50G";echo " ...
- FIO是测试IOPS
FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, ...
- RDIFramework.NETV2.9版本 Web新增至14套皮肤风格+三套界面组合(共42套皮肤组合)
客户的心声是最重要的,RDIFramework.NET V2.9版本不仅对WinForm版做了大的调整,Web版也彻彻底底的底翻上的优化了一篇,不仅增加了很多的新功能.新特色,用户最期望的界面风格也进 ...
- NSFileManager 遍历目录
NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *documentPath = [NSHomeDirecto ...