您的位置:首页 > 编程语言 > PHP开发

数据存储详解(四)及四大组件之一 之--->ContentProvider(内容提供者)

2015-09-08 19:36 681 查看

1.概述:

内容提供者(content provider)使一个应用程序的指定数据集提供给其他应用程序。这些数据可以存储在文件系统中、在一个SQLite数据库、或以任何其他合理的方式。内容提供者继承自ContentProvider 基类并实现了一个标准的方法集,使得其他应用程序可以检索和存储数据。然而,应用程序并不直接调用这些方法。相反,替代的是它们使用一个ContentResolver对象并调用它的方法。ContentResolver能与任何内容提供者通信,它与提供者合作来管理参与进来的进程间的通信。

只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。如果你不需要在多个应用程序间共享数据,你可以直接使用SQLiteDataBase。



除了电话簿、短信、媒体库等都允许第三方程序进行访问,实现了跨程序数据共享的功能,使用的技术便是内容提供器。



注:content provider现在使用较少,只需要学会查找联系人、手机图片就OK。

2.用法:

1)两种用法:

使用现有的内容提供器来读取和操作相应的程序中的数据;

创建自己的内容提供器给程序的数据提供外部访问接口。

2) 步骤:

<1>通过Context中的getContentResolver()方法获取到ContentResolver类的实例。

<2>通过ContentResolver中的各种方法操作数据。




ContentResolver不接收表名参数,而使用Uri参数代替。它给内容提供器中的数据建立了唯一的标识,

Uri:

由权限和路径组成。

权限:区别不同的应用程序,一般为程序包名来命名。

路径:区别不同的数据表。通常添加到权限的后面。

例,标准格式:

content://com.example.app.provider/table1



注:得到的uri字符串需要解析成Uri对象。

Uri.parse(“content://com.example.app.provider/table1”);





总结方法:例:getContentResolver().query(,,,,);



3.范例:

功能:获得手机联系人:

(代码)




理解:

uri即为数据的地址,其形式是手机联系人的数据库地址为:

content:// com.android.contacts ,这里通过ContentContract来获得。

(权限设置)在manifest.xml中:

<uses-permission android:name="android.permission.READ_CONTACTS"/>


(效果演示):

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: