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 ...
随机推荐
- DHCP协议讲解
一.DHCP服务介绍: DHCP为动态主机配置协议,该协议能自动配置主机的IP地址.子网掩码.网关及DNS服务器等TCP/IP信息.DHCP可以降低客户机IP地址配置的复杂度和网络管理成本. DHCP ...
- 报错:java.io.FileNotFoundException: (系统找不到指定的路径。)
报错如下: java.io.FileNotFoundException: E:\apache-tomcat-8.0.37\webapps\20161028-FileUpLoad\WEB-INF\fil ...
- 安装ORACLE后,改变计算机名称,导致OracleDBConsoleOrcl服务无法启动
错误信息: 启动oracledbconsoleorcl 服务提示 -- “--Windows不能再本地计算机启动oracledbconsoleorcl 有关更多信息,查阅系统事件日志,如果这是非Mi ...
- [内核同步]自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析
转自:http://blog.csdn.net/wh_19910525/article/details/11536279 自旋锁的初衷:在短期间内进行轻量级的锁定.一个被争用的自旋锁使得请求它的线程在 ...
- Maven本地安装JAR包组件
http://www.mkyong.com/maven/how-to-add-oracle-jdbc-driver-in-your-maven-local-repository/ mvn instal ...
- import了sun开头的类,虽然它在代码里压根就没派上用处!但是必须得引用!
package action; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io. ...
- [Android Studio 1A] – 插件
关于android studio插件的使用,一直没有好的机会来研究,最近项目开发中需要统计项目的代码行数,所以就需要一个代码统计的插件.我选择的是 Statistic,下载地址是:https://pl ...
- Ubuntu离线安装包制作(转载)
From:http://blog.csdn.net/nupt123456789/article/details/11649603 1.应用场景 a.需要在多台电脑上安装同一软件,且软件很大,下载需要时 ...
- 30岁IT男连续工作一个月 突然失聪
连续开发软件一个月,30 岁男子突然听不见声音了.近日,浙江省中山医院针灸科主任高宏主任中医师接诊了这名患者.高主任说,现在很多年轻人工作压力大,得突发性耳聋的越来越多,这种病听着不是威胁生命的大病, ...
- 拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建
使用.创造和分享 笔者曾经不思量力的思考过『是什么推动了互联网技术的快速发展?』这种伟大的命题.结论是,除了摩尔定律之外,技术经验的快速积累和广泛分享,也是重要的原因. 有人戏称,『写 Java,首先 ...