<provider>元素
就像Activity和Service组件,ContentProvider的子类必须在应用的manifest文件中进行定义。使用<provider>元素。Android系统从元素中获取以下信息:
- Authority(
- 在系统中标志整个provider的代号。此属性在设计ContentURI 一节中有更详细的描述。
- 实现了
ContentProvider的类。此类在实现ContentProvider类一节中有更多描述。 - 此属性指定了其它应用想要操作provider的数据所需的权限:
android:authorities)android:name)android:grantUriPermssions:临时权限标记。android:permission:指定整个provider的read/write权限。android:readPermission:指定整个Provider的读权限。android:writePermission:指定整个Provider的写权限。
- 启动和控制权限
- 这些属性决定了android系统如何以及何时启动provider,provider的处理属性,以及其它运行时设置:
android:enabled:允许系统启动provider的标志。.android:exported:允许其它应用使用此provider。android:initOrder:此provider相对于同进程中的其它provider的启动顺序。android:multiProcess:允许系统在调用客户端所在的进程中启动provider的标记。android:process:provider应该在其中运行的进程的名字。android:syncable:Flag indicating that the provider's data is to be sync'ed with dataon a server.
- 全部的属性在
<provider>元素的开发指南中有详细讲解。 - 一个可选的图标和一个label:
android:icon:一个包含图标的drawable资源。在Settings > Apps > All所显示的应用列表中显示,位于provider的旁边。android:label:一个描述provider或它的数据信息的label。出现在Settings > Apps > All所显示的应用列表中。
Intents和数据操作
应用可以通过Intent直接操作contentprovider。应用不调用ContentResolver或ContentProvider的任何方法,而是发送一个intent启动一个activity,这个activity一般是provider所在应用的一部分,它负责取得数据并显示在自己的UI上。跟据intent中的action的不同,目标activity可能会提示用户对provider的数据作出修改。intent可能还包含显示在界面上的额外的数据;于是用户可选择在使用这些数据修改provider的数据之前改变这些数据。
你可能想使用intent方式来帮助保证数据的完整性。你的provider可能跟据所严格定义的商业逻辑来决定是否具有数据插入、更新、删除等操作。如果是这样,允许其它应用直接修改你的数据可能导致非法的数据出现。如果你想让开发者使用intent方式,需保证你的文档中对它有完整的说明。向他们解释为什么使用intent方式通过你的自己的应用UI来操作好于使用他们的代码。
处理要修改你的provider的数据的intent与处理其它intent没有什么区别。你可以从Intentsand Intent Filters学到更多信息。

本文介绍了Android中ContentProvider的配置方法,包括如何在manifest文件中声明<provider>元素、设置各种权限及启动控制属性等内容。
3万+

被折叠的 条评论
为什么被折叠?



