当前位置: 老葡京网站娱乐 > 操作系统 > 手机系统 > 正文

Android开发入门(二十)内容提供者 20.1 数据共享

时间:2014-01-25 csdn manoel

老葡京网站娱乐 www.sdguanhua.com 在上一章节中,我们介绍了数据持久化的几种方法:首选项,文件,以及数据库。在保存复杂的数据结构 时,推荐使用SQliteDatabase。但是,共享数据就成了一种挑战,因为,数据库只对创建它的程序包可用。

在这一章节中,将会介绍Android特有的数据共享方式:使用ContentProvider。也会介绍如何使用内 置的ContentProvider,以及创建自己的ContentProvider,以便在多个程序包之间共享数据。

在 Android中,共享数据的推荐方式是使用ContentProvider??梢园袰ontentProvider想想成一个数据商店。它 是如何存储数据的,这和使用它的程序不相关。重要的是,如何通过编码接口去获取这些数据。

ContentProvider表现的非常像一个数据库,你可以执行增删查改操作。

然而,和数据库不同 的是,它可以使用不同的方式去存储数据。数据可以存放在数据库中,文件中,甚至网络上面。

Android提供了许多有用的ContentProvider,如下:

Browser  存储浏览器书签,浏览历史等等。

CallLog   存储未接来电,通话记录等等。

Contacts 储存联系人详情。

MediaStore 存储媒体文件,比如音频,视频,图片等。

Settings 存储设备的一些配置信息。

除了这些内置的ContentProvider,也可以创建自己的ContentProvider。

想要查询一个 ContentProvider,需要用URI的形式指定一个查询字符串,指定某一行。URI查询形式如下:

<standard_prefix>://<authority>/<data_path>/<id>

URI的组成 部分如下:

ContentProvider标准的前缀是 content://

authority指定了ContentProvider的名字。contacts就是内置Contacts 的ContentProvider的名字。对于 第三方的ContentProvider,这个authority可能就是一个完成的指定的名字,例如net.manoel.provider或 net.horsttnann.provider。

data_path指定了请求数据的类别。例如,如果你正在获取Contacts ContentProvider中的所有联系人, 那么,data_path就应该是people,即URI会是这样:content://contacts/people

id 指定了请求的记录。例如,如果你在查找在Contacts ContentProvider中的2号联系人,那么URI会是 这样:content://contacts/people/2

下面是一些查询的例子: