<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. HackerRank "Vertical Rooks"

    Please note: VROOK cannot go back-ward - that leads to a simple variation to Game of Nim: just XOR. ...

  2. sql数据库带补全终端命令

    mysql pip install mycli pgsql pip install pgcli 都是python脚本,记录备忘.

  3. GL_GL系列 - 预算管理分析(案例)

    2014-07-09 Created By BaoXinjian

  4. window.print实现打印特定控件或内容

    window.print打印指定div 首先我们可以把要打印的内容放在div中,然后用下面的代码进行打印. <html> <head> <script language= ...

  5. mysql server has gone away 与max_allowed_packed

    今天在本地测试测试给所有店铺批量发信息的功能,大约2万条记录,在本地和备用linux服务器上测试都没有问题,但上windows时一直报mysql server has gone away的错误,搜索一 ...

  6. Windows2008防火墙封ip

    http://www.bitscn.com/os/windows/201411/406212.html

  7. 移动设备wap手机网页html5通过特殊链接:打电话,发短信,发邮件详细教程

    如果需要在移动浏览器中实现拨打电话,调用sms发短信,发送email等功能,移动手机WEB页面(HTML5)Javascript提供的接口是一个好办法. 采用url href链接的方式,实现在Safa ...

  8. Apache Thrift学习之一(入门及Java实例演示)

    目录: 概述 下载配置 基本概念 数据类型 服务端编码基本步骤 客户端编码基本步骤 数据传输协议 实例演示(java) thrift生成代码 实现接口Iface TSimpleServer服务模型 T ...

  9. Struts2 Annotation 注解配置

    也叫Zero Configuration(零配置),它省去了写xml文件的麻烦,可以直接在类叫进行配置,不用在java文件和xml文件中来回切换. 必须导入struts2-convention-plu ...

  10. linux 挂载(转载)

    From:http://forum.ubuntu.org.cn/viewtopic.php?t=257333 用linux,就一定要用linux的方式去思维.嗯,说的容易做起来难.我的D盘哪去了?恐怕 ...