<provider>

英文原文:http://developer.android.com/guide/topics/manifest/provider-element.html
采集(更新)日期:2014-7-1
搬迁自原博客:http://blog.sina.com.cn/s/blog_48d491300100zmv5.html

语法:
<provider android:authorities="list"
android:enabled=["true" | "false"]
android:exported=["true" | "false"]
android:grantUriPermissions=["true" | "false"]
android:icon="drawable resource"
android:initOrder="integer"
android:label="string resource"
android:multiprocess=["true" | "false"]
android:name="string"
android:permission="string"
android:process="string"
android:readPermission="string"
android:syncable=["true" | "false"]
android:writePermission="string" >
. . .
</provider>
包含于:
<application>
可包含:
<meta-data>
<grant-uri-permission>

<path-permission>
说明:
声明一个 Content Provider 组件。
Content Provider 是
ContentProvider
的子类,它为应用程序管理的数据提供结构化的访问方式。
应用程序的所有 Content Provider 都必须在 Manifest 文件的 <provider> 元素中定义,
否则,系统是不予理会也不会去运行 Content Provider 的。

只需要声明本应用程序所含的 Content Provider 即可。属于其他应用程序而本程序会用到的 Content Provider 不需要进行声明。

Android 系统用 content URIauthority 部分来存放对 Content Provider 的引用。
例如,假定要访问存储了医务人员信息的 Content Provider 。
这里调用了
ContentResolver.query()
方法,以下 URI 作为参数之一标明了 Content Provider:

content://com.example.project.healthcareprovider/nurses/rn

content: scheme 部分标明了这是一条指向 Android Content Provider 的 URI 。 authority 部分 com.example.project.healthcareprovider 标明了 Content Provider 本身。 Android 系统会在已知的 Provider 和 authority 清单中查找该 authority 信息 。 字符串 nurses/rn 是路径信息,Content Provider 可以用它来标识数据的某个部分。

注意,当在 <provider> 元素中定义 Content Provider 时, 请不要在 android:name 中包含 scheme 及路径信息,只要 authority 就可以了。

关于开发和使用 Content Provider 的详细信息,请参阅 API 指南 Content Provider

属性:
android:authorities
一个或多个 URI authority 列表,标识了 Content Provider 内提供的数据。 多个 authority 名称之间用分号分隔。 为了避免冲突, authority 名称应该使用 Java 风格的命名规则(比如 com.example.provider.cartoonprovider)。 一般来说,它是实现 Content Provider 的 ContentProvider 子类名。

没有默认值。至少必须指定一个 authority 。

android:enabled
Content Provider 能否被系统实例化 — “true”可以,“false”不允许。 默认值是“true”。

<application>元素拥有自己的 enabled 属性,适用于应用程序所有内部组件,包括 Content Provider 。 要允许内容提供器的使用, <application> <provider> 的该属性都必须设置为“true”(均为默认值即可)。 如果其中任何一个为“false”,则该 Content Provider 将被禁用,它将不能被实例化。

android:exported
本 Content Provider 能否被其他应用程序使用:

  • true”:可以。 任何应用程序都可以通过 URI 访问本 Content Provider,且受限于 Content Provider 声明的权限要求。
  • false”:不可以。 通过设置 android:exported="false",可以限制对本应用程序中的 Content Provider 进行。 只有那些用户 ID 相同的应用程序才能访问到它。

对于 android:minSdkVersionandroid:targetSdkVersion 小于等于"16"的应用程序,默认值是“true”。 对于这两个属性值为"17"以上的应用程序,默认值为"false"

android:grantUriPermissions
是否能临时超越 readPermissionwritePermissionpermission 属性的限制, 给平常无权对 Content Provider 数据的访问进行授权 — “true”可以授权,“false”不可以。 如果设为“true”,则可对 Content Provider 的所有数据进行授权访问。 如果设为“false”,那就只能对 <grant-uri-permission> 子元素中列出的数据子集(假如存在的话)进行授权。 默认值是“false”。

授权机制使得程序组件能对那些受权限保护的数据进行一次性的访问。 比如,假定某条 e-mail 包含了附件,邮件程序可能会调用合适的查看器来打开附件,即使该查看器平常无权查看 Content Provider 的全部数据也没关系。

这时候,可以通过设置启动组件的 Intent 对象的 FLAG_GRANT_READ_URI_PERMISSIONFLAG_GRANT_WRITE_URI_PERMISSION 标志位进行授权。 比如,邮件程序可以在传入 Context.startActivity() 的 Intent 中设置 FLAG_GRANT_READ_URI_PERMISSION。 权限即指定授予该 Intent 中的 URI。

如果启用了这种临时授权的特性,不论是将本属性设为“true”还是定义了 <grant-uri-permission> 子元素,那么当所涉及的 URI 要从 Content Provider 中删除时,必须调用一下 Context.revokeUriPermission()

请参阅<grant-uri-permission>元素。

android:icon
代表 Content Provider 的图标。 本属性必须设为对 drawable 资源的引用,该资源包含了图片的定义。 如果未设置本属性,则会用全局性的应用程序的图标来代替。 (参阅 <application> 元素的 icon 属性)。
android:initOrder
相对于同一进程中其他 Content Provider 而言,本 Content Provider 的实例化顺序。 如果多个 Content Provider 之间存在依赖关系,可以用本属性来确保按照需要的依赖关系来创建各个 Content Provider 。 本属性值是一个整数,数值越大就越先被初始化。
android:label
供用户阅读的 Content Provider 的文本标签。 如果未设置本属性,则用全局性的应用程序文本标签代替(参阅 <application> 元素的 label 属性)。

本文本标签应该设为对字符串资源的引用,这样就能像用户界面中的其他字符串一样对其进行本地化。 不过为了应用程序开发时的便利,也可以直接设置为字符串。

android:multiprocess
是否在每个客户端进程中都能创建 Content Provider 的实例 —“true”表示可以在多个进程中运行实例,“false”表示不可以。 缺省值是“false”。

通常情况下,Content Provider 是在定义它的应用程序的进程中实例化的。 然而,如果本属性置为“true”,则系统可以在每个需要用到它的客户端程序所在的进程中都创建一个实例,这样就避免了进程间通讯的开销。

android:name
实现 Content Provider 的类名称,即 ContentProvider 的子类。 这应该是一个完全限定的类名称(比如“com.example.project.TransportationProvider”)。 不过作为简称,如过首字符为句点,则会在名称前面自动加上 <manifest> 元素指定的包名称。

没有默认值。名称必须指定。

android:permission
客户端读写 Content Provider 中的数据所必需的权限名称。 本属性为一次设置读和写权限提供了快捷途径。 不过,readPermissionwritePermission属性优先于本设置。 如果同时设置了readPermission属性,则其将控制对 Content Provider 的读取。 如果设置了writePermission属性,则其也将控制对 Content Provider 数据的修改。

关于权限的详细信息,请参阅 Manifest 介绍一文的 Permissions 章节和另一篇文档 安全和权限

android:process
运行 Content Provider 的进程名称。 通常,应用程序的所有组件都运行在创建时的默认进程中。 该进程的名称与程序包名相同。 <application> 元素的 process 属性也可以为每个组件设置不同的默认进程。 但每个组件也可以用各自的process属性覆盖默认进程名称,使得程序可以跨越多个进程运行。

如果本属性设置的名称以冒号(':')开头,则必要时会新建一个属于该程序私有的进程,Content Provider 将在此新进程中运行。 如果进程名称以小写字母开头,则内容提供器将在一个以此名字命名的全局进程中运行,并赋予应有的访问权限。 这就允许不同应用程序的多个组件可以共享同一个进程,以减少对资源的占用。

android:readPermission
查询 Content Provider 的客户端所必需的权限。 参见permissionwritePermission属性。
android:syncable
Content Provider 所控制的数据是否需要与某个服务器进行同步 — “true”表示需要同步,“false”表示不需要。
android:writePermission
修改 Content Provider 数据的客户端所必需的权限。 请参阅permissionreadPermission属性。

引入自:
API 级别 1
参阅:
Content Provider

Android开发-API指南-<provider>的更多相关文章

  1. Android开发-API指南-<permission>

    <permission> 英文原文:http://developer.android.com/guide/topics/manifest/permission-element.html 采 ...

  2. Android开发-API指南-应用程序开发基础

    Application Fundamentals 英文原文:http://developer.android.com/guide/components/fundamentals.html 采集(更新) ...

  3. Android开发-API指南-Intent和Intent过滤器

    Intents and Intent Filters 英文原文:http://developer.android.com/guide/components/intents-filters.html 采 ...

  4. Android开发-API指南-Android简介

    Introduction to Android 英文原文:http://developer.android.com/intl/zh-cn/guide/index.html 采集日期:2014-4-16 ...

  5. Android开发-API指南-设备兼容性

    Device Compatibility 英文原文:http://developer.android.com/guide/practices/compatibility.html 采集日期:2014- ...

  6. Android开发-API指南-任务和回退栈

    Task and Back Stack 英文原文: http://developer.android.com/guide/components/tasks-and-back-stack.html 采集 ...

  7. 【最后一篇API译文】Android开发-API指南- Contacts Provider

    Contacts Provider 今年加入了某字幕组,加之杂事颇多,许久未添新文了,惭愧之极. 在听闻 Google 即将重返中国后,近日忽又发现官方网站正在放出 API 中文版,比如本文.当然不是 ...

  8. Android开发-API指南-创建 Content Provider

    Creating a Content Provider 英文原文:http://developer.android.com/guide/topics/providers/content-provide ...

  9. Android开发-API指南-Content Provider基础

    Content Provider Basics 英文原文:http://developer.android.com/guide/topics/providers/content-provider-ba ...

随机推荐

  1. 真实赛车3,SPEEDRUSH TV 第3季,第3阶段(第3天),直线加速赛

    与其跳过,不如金币升级引擎和车身.因为后边紧跟一场计时赛.

  2. 发送WIN+SAPCE键,WINDOWS,空格键

    键盘代码部份转自:http://www.cnblogs.com/cpcpc/archive/2011/02/22/2123055.html 由于喜欢用CTRL+空格键切换输入法,在WIN8上有所不习惯 ...

  3. C#中WebService 的 Timer定时器过段时间后自动停止运行

    我用.net做的一个Timer定时器,定时获取短信并给予回复,但大概过了十几个小时以后,Timer定时器会自动停止,再发送短信就不能收到回复,需要在服务器中重新运行定时器才可以,请教各位! 我是在.n ...

  4. 黄聪:VS2010每次F5启动都重新编译但是没办法进入断点

    这个问题主要是没有把Debug和Realse的生成配置勾上:

  5. Android Gradle实用技巧——APK文件名中加上SVN版本号,日期等

    有时候,我们会希望能把APK文件名上带上打包日期,打包时svn的版本号,应用版本号等.当然这些也可以手动添加,但是手动的话也未免太不优雅了,而且可能会出错. 利用Gradle,我们可以让打包出来的ap ...

  6. java.util.concurrent

    软件包 java.util.concurrent 的描述 在并发编程中很常用的实用工具类.此包包括了几个小的.已标准化的可扩展框架,以及一些提供有用功能的类,没有这些类,这些功能会很难实现或实现起来冗 ...

  7. __VA_ARGS__用法(转)

    自定义调试信息的输出 调试信息的输出方法有很多种,  例如直接用printf,  或者出错时使用perror, fprintf等将信息直接打印到终端上, 在Qt上面一般使用qDebug,而守护进程则一 ...

  8. CF 161D Distance in Tree 树形DP

    一棵树,边长都是1,问这棵树有多少点对的距离刚好为k 令tree(i)表示以i为根的子树 dp[i][j][1]:在tree(i)中,经过节点i,长度为j,其中一个端点为i的路径的个数dp[i][j] ...

  9. OC错误

  10. php socket 学习

    socket超时设置 ini_set("default_socket_timeout", -1); stream_set_timeout $fp = fsockopen(" ...