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

1.概述:

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

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


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

2.用法:

1)两种用法:

  • 使用现有的内容提供器来读取和操作相应的程序中的数据;
  • 创建自己的内容提供器给程序的数据提供外部访问接口。

2) 步骤:
<1>通过Context中的getContentResolver()方法获取到ContentResolver类的实例。
<2>通过ContentResolver中的各种方法操作数据。
数据存储详解(四)及四大组件之一 之--->ContentProvider(内容提供者)_第1张图片
ContentResolver不接收表名参数,而使用Uri参数代替。它给内容提供器中的数据建立了唯一的标识,

Uri:
由权限和路径组成。
权限:区别不同的应用程序,一般为程序包名来命名。
路径:区别不同的数据表。通常添加到权限的后面。
例,标准格式:
content://com.example.app.provider/table1

注:得到的uri字符串需要解析成Uri对象。
Uri.parse(“content://com.example.app.provider/table1”);


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

3.范例:

功能:获得手机联系人:
(代码)
数据存储详解(四)及四大组件之一 之--->ContentProvider(内容提供者)_第2张图片
理解:
uri即为数据的地址,其形式是手机联系人的数据库地址为:
content:// com.android.contacts ,这里通过ContentContract来获得。
(权限设置)在manifest.xml中:

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

(效果演示):
这里写图片描述

你可能感兴趣的:(数据库,应用)