Android开发-API指南-<provider>
<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 URI 的 authority 部分来存放对 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:minSdkVersion或android:targetSdkVersion小于等于"16"的应用程序,默认值是“true”。 对于这两个属性值为"17"以上的应用程序,默认值为"false"。 - “
android:grantUriPermissions- 是否能临时超越
readPermission、writePermission和permission属性的限制, 给平常无权对 Content Provider 数据的访问进行授权 — “true”可以授权,“false”不可以。 如果设为“true”,则可对 Content Provider 的所有数据进行授权访问。 如果设为“false”,那就只能对<grant-uri-permission>子元素中列出的数据子集(假如存在的话)进行授权。 默认值是“false”。授权机制使得程序组件能对那些受权限保护的数据进行一次性的访问。 比如,假定某条 e-mail 包含了附件,邮件程序可能会调用合适的查看器来打开附件,即使该查看器平常无权查看 Content Provider 的全部数据也没关系。
这时候,可以通过设置启动组件的 Intent 对象的
FLAG_GRANT_READ_URI_PERMISSION和FLAG_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 中的数据所必需的权限名称。 本属性为一次设置读和写权限提供了快捷途径。 不过,
readPermission和writePermission属性优先于本设置。 如果同时设置了readPermission属性,则其将控制对 Content Provider 的读取。 如果设置了writePermission属性,则其也将控制对 Content Provider 数据的修改。关于权限的详细信息,请参阅 Manifest 介绍一文的 Permissions 章节和另一篇文档 安全和权限。
android:process- 运行 Content Provider 的进程名称。 通常,应用程序的所有组件都运行在创建时的默认进程中。 该进程的名称与程序包名相同。
<application>元素的process属性也可以为每个组件设置不同的默认进程。 但每个组件也可以用各自的process属性覆盖默认进程名称,使得程序可以跨越多个进程运行。如果本属性设置的名称以冒号(':')开头,则必要时会新建一个属于该程序私有的进程,Content Provider 将在此新进程中运行。 如果进程名称以小写字母开头,则内容提供器将在一个以此名字命名的全局进程中运行,并赋予应有的访问权限。 这就允许不同应用程序的多个组件可以共享同一个进程,以减少对资源的占用。
android:readPermission- 查询 Content Provider 的客户端所必需的权限。 参见
permission和writePermission属性。 android:syncable- Content Provider 所控制的数据是否需要与某个服务器进行同步 — “
true”表示需要同步,“false”表示不需要。 android:writePermission- 修改 Content Provider 数据的客户端所必需的权限。 请参阅
permission和readPermission属性。
- 引入自:
- API 级别 1
- 参阅:
- Content Provider
Android开发-API指南-<provider>的更多相关文章
- Android开发-API指南-<permission>
<permission> 英文原文:http://developer.android.com/guide/topics/manifest/permission-element.html 采 ...
- Android开发-API指南-应用程序开发基础
Application Fundamentals 英文原文:http://developer.android.com/guide/components/fundamentals.html 采集(更新) ...
- Android开发-API指南-Intent和Intent过滤器
Intents and Intent Filters 英文原文:http://developer.android.com/guide/components/intents-filters.html 采 ...
- Android开发-API指南-Android简介
Introduction to Android 英文原文:http://developer.android.com/intl/zh-cn/guide/index.html 采集日期:2014-4-16 ...
- Android开发-API指南-设备兼容性
Device Compatibility 英文原文:http://developer.android.com/guide/practices/compatibility.html 采集日期:2014- ...
- Android开发-API指南-任务和回退栈
Task and Back Stack 英文原文: http://developer.android.com/guide/components/tasks-and-back-stack.html 采集 ...
- 【最后一篇API译文】Android开发-API指南- Contacts Provider
Contacts Provider 今年加入了某字幕组,加之杂事颇多,许久未添新文了,惭愧之极. 在听闻 Google 即将重返中国后,近日忽又发现官方网站正在放出 API 中文版,比如本文.当然不是 ...
- Android开发-API指南-创建 Content Provider
Creating a Content Provider 英文原文:http://developer.android.com/guide/topics/providers/content-provide ...
- Android开发-API指南-Content Provider基础
Content Provider Basics 英文原文:http://developer.android.com/guide/topics/providers/content-provider-ba ...
随机推荐
- 重绘TabControl
本文转载自:http://blog.csdn.net/conmajia/article/details/7596718 作者:野比 (conmajia@gmail.com) 时间:May, 2012 ...
- NodeJS的异步编程风格
NodeJS的异步编程风格 http://www.infoq.com/cn/news/2011/09/nodejs-async-code NodeJS运行环境因其支持Javascript语言和异步编程 ...
- HTML ISO-8859-1 参考手册
HTML 4.01 支持 ISO 8859-1 (Latin-1) 字符集. ISO-8859-1 的较低部分(从 1 到 127 之间的代码)是最初的 7 比特 ASCII. ISO-8859-1 ...
- Synchronizing with Remote Repositories
Synchronizing the states of local and remote repositories consists of pulling from and pushing to th ...
- DBA_Oracle Startup / Shutdown启动和关闭过程详解(概念)
2014-08-07 Created By BaoXinjian
- php 设置一个函数的最大运行时间
如何防止一个函数执行时间过长呢?在PHP里可以用pcntl时钟信号+异常来实现 declare(ticks = 1); function a() { sleep(10); echo "a f ...
- C语言小技巧
/* 求阶乘时设置最大调用层数,防止栈占满 当从函数进入另一个函数时当前函数的内容会入栈,另一个函数调用完时在出栈 */ int factorial(int n, int level) { //pri ...
- Home键状态保存运用场景
当我们在一个Activity中有接收Intent过来的值,或者当前Activity有保存数据时候,如果此时不小心按到了Home键,然后没有及时回来而是运行了其它应用程序,当你想起来的时候,恐怕已经是几 ...
- JAVA元运算符,一元运算符,二元运算符,三元运算符
一元运算符: 序号 一元运算符 说明 1 i++ 给i加1 2 i-- 给i减1 3 ++i 给i加1 4 --i 给i减1 i++;/*例:int i=1;i++;//先将i的值1赋值给i,然后i再 ...
- delphi 调用百度地图WEBSERVICE转换GPS坐标 转
http://www.cnblogs.com/happyhills/p/3789864.html 百度地图的API说明 使用方法 第一步,申请密钥(ak),作为访问服务的依据: 第二步,按照请求参 ...