创建内容提供器之前的准备工作
在开始创建提供器之前,先做以下工作:
1. 决定是否需要一个内容提供器。如果你想要提供以下的一个或多个功能,就需要创建一个内容提供器:
A.你想要给其他的应用程序提供复杂的数据或文件;
B.你想要允许用户把复杂的数据从你的应用程序中复制到其他应用程序中;
C.你想要使用搜索框架提供定制的搜索方案。
如果只是在你自己的应用程序内部使用一个SQLite数据库,就不需要提供器。
2. 认真阅读“内容提供器基础”主题,以学习更多的有关提供器的知识。
接下来,按照以下步骤来创建提供器:
1. 给数据设计行存储。内容提供器用两种方式提供数据:
文件数据:
通常,放进文件的数据有照片、音频、或视频等。这些文件保存在你的应用程序的私有空间中。在来自另一个应用程序的对一个文件的请求响应中,你的提供器能够提供对文件的处理。
结构化数据:
通常放入数据库、数组或类似结构的数据,使用与表(行和列的结构)兼容的格式来保存数据。一行代表一个实体,如一个人或清单中一项。一列代表行实体的某些数据,如人的名字或项目的价格。存储这中类型数据的通常方法是保存在一个SQLite数据库中,但是你能够使用任何其他持久化存储类型。有关Android系统中有效的存储类型,请看“设计数据存储”的章节。
2. 定义一个具体的ContentProvider类的实现类和这个类所要求的方法。这个类是你的数据和Android系统的其他部分之间的接口。关于ContentProvider类的更多信息,请看“实现ContentProvider类”章节。
3. 定义提供器的授权字符串、内容资源标识(URI)、和列名。如果你想要这个提供器处理Intent对象,还要定义Intent动作、附加数据和标识。同时还要给想要访问你的数据的应用程序定义必要的访问权限。你应该把所有的这些值作为常量定义在一个独立的合约类中,以便以后可以把这个类暴露给其他应用程序。有关内容资源标识(URI)的更多信息,请看“设计内容资源标识(URI)”。有关Intent对象的更多信息,请看“Intent和数据访问”。
4. 添加其他的可选项,如示例数据或能够在提供器或基于云端数据之间同步数据的AbstractThreadedsyncAdapter的实现。