Android中的跨进程通信方法实例及特点分析(二):ContentProvider

本文介绍了Android中ContentProvider的概念,用于跨进程通信,提供数据访问。ContentProvider包含onCreate、query、insert、update、delete和getType等关键方法。同时阐述了Uri的组成和ContentResolver的使用。UriMatcher用于匹配Uri。文章通过实例演示了如何自定义ContentProvider并从另一个应用读取数据。
摘要由CSDN通过智能技术生成

1.ContentProvider简介        

       在Android中有些数据(如通讯录、音频、视频文件等)是要供很多应用程序使用的,为了更好地对外提供数据,Android系统给我们提供了Content Provider使用,通过它可以访问上面所说的数据,例如很多音乐播放器中的扫描功能其实就用到了Content Provider功能(当然,也有的播放器是自己去实现更底层的功能)。这样的好处是统一管理,比如增加了某个音频文件,底层就会将这种变化通知Content Provider,从而当应用程序访问时就可以获得当前最新的数据。

       当然,Android也允许我们定义自己的Content Provider,只要继承它的基类,并且实现下面的方法即可。

public boolean onCreate() 在创建ContentProvider时调用
public Cursor query(Uri, String[], String, String[], String):用于查询指定Uri的ContentProvider,返回一个Cursor
public Uri insert(Uri, ContentValues):根据指定的Uri添加数据到ContentProvider中
public int update(Uri, ContentValues, String, String[]):用于更新指定Uri的ContentProvider中的数据
public int delete(Uri, String, String[]):根据Uri删除指定的数据
public String getType(Uri):用于返回指定的Uri中的数据的MIME类型
*如果操作的数据属于集合类型,那么MIME类型字符串应该以vnd.android.cursor.dir/开头。
例如:要得到所有p1记录的Uri为content://contacts/p1,那么返回的MIME类型字符串为"vnd.android.cursor.dir/p1"。
*如果要操作的数据属于非集合类型数据,那么MIME类型字符串应该以vnd.android.cursor.item/开头。
例如:要得到id为100的student记录的Uri为content://contacts/student/100,那么返回的MIME类型字符串应为"vnd.android.cursor.item/student"。

2.Uri简介

     一个标准的Uri为content://authority/path可分为以下三部分:

(1)content://:这个部分是ContentProvider规定的,就像http://代表Http这个协议一样,使用ContentProvider的协议是content://

(2)authorities:它在所在的Android系统必须是唯一的,因为系统就是通过它来决定操作或访问哪个ContentProvider的,这与互联网上的网址必须唯一是一样的道理。

(3)path:资源路径。

       显然,从上面的分析可以看出ContentProvider虽然也可实现跨进程通信,但是它适用的场景主要是与数据库相关,有时也可能是文本文件或XML等存储方式。

3.ContentResolver

       如果只是定义一个ContentProvider的话,没有任何意义,因为ContentProvider只是内容提供者,它要被别的应用(进程)读取才有价值。与实现ContentProvder的方法相对应,使用ContentResolver相关的方法如下所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值