AndroidManifest.xml文件详解(provider)

<providerandroid: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> html

被包含于(CONTAINED IN): android

<application> 浏览器

可以包含的元素(CAN CONTAIN): 服务器

<meta-data> app

<grant-uri-permission> ide

<path-permission> 性能

说明(DESCRIPTION): ui

这个元素用于声明一个内容提供器,它对应一个ContentProvider类的子类。它提供了对由应用程序管理的数据的结构化的访问。应用程序使用的全部的内容提供器都必须在其清单文件中由<provider>元素来声明。对于那些没有在清单中声明的内容提供器,系统看不到,也不会运行。(只须要声明那些做为该应用程序一部分的来开发的那些内容提供器,而不是那些由应用程序使用的由其余人开发本应用以外的那些内容提供器)。 spa

Android系统经过content:URI的受权部分来识别内容提供器。例如,假设下列的URI要传递给ContentResolver.query()方法: .net

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

content:表示数据是属于内容提供器的,受权(com.example.project.healthcareprovider):标识着一个具体的提供器。所以受权必须惟一的。一般,就像这个例子同样,受权是一个完整的ContentProvider子类的名称。URI的路径部分被内容提供器用来标识具体的数据子集,可是那些路径没有被声明在清单文件中。

关于使用可开发内容提供器的更多信息,请看内容提供的文档()。

http://blog.csdn.net/fireofstar/article/details/7307402

属性(ATTRIBUTES):

android:authorities

标识内容提供器范围内的数据URI的受权列表,有多个受权时,要用分号来分离每一个受权。为了不冲突,受权名应该使用Java样式的命名规则(如:com.example.provider.cartoonprovider)。一般,用ContentProvider子类名称来设定这个属性。

这个属性没有默认值,至少要指定一个受权。

android:enabled

这个属性用于指定这个内容提供器是否可以被系统安装。设置为true,则能够安装;不然不能安装。默认值是true。

<application>元素有它本身的enabled属性,这个属性会应用给全部的应用程序组件,包括内容提供器。<application>和<provider>的enabled属性都必须设置为true(它们的默认值都是true)。若是有一个设置为false,那么提供器就被禁止安装。

android:exported

这个属性用于指定该内容提供器是否可以被其余的应用程序组件使用。若是设置为true,则能够被使用,不然不能被使用。若是设置为false,该提供器只对同名的应用程序或有相同用户ID的应用程序有效。默认值是true。

虽然可以使用这个属性来公开内容提供器,可是依然还要用permission属性来限制对它的访问。

android:grantUriPermission

这个属性用于设定那些对内容提供的数据没有访问权限的访问者,是否可以被授予访问的权限,这个权限是临时性的,它会克服由readPermission、writePermission和permission属性的设置限制。若是这个属性设置为true,那么权限就能够授予访问者,不然不会授予没有访问权限的访问者。若是设置为true,则权限能够临时被授予内容提供器的任何数据。若是设置为false,则权限只能被授予<gran-uri-permission>子元素中所列出的数据子集。默认值是false。

这种受权是应用程序提供了一种一次性访问被权限所保护的数据的方法。例如,当一个e-mail包含了一个附件时,mail应用程序就能够调用适当的浏览器来打开附件,即便这个浏览器没有查看全部内容提供器数据的权限。

在这样的场景中,权限是经过激活组件的Intent对象中的FLAG_GRANT_READ_URI_PERMISSION和FLAG_GRANT_WRITE_URI_PERMISSION标记来授予的。例如,mail应用程序能够把FLAG_GRANT_READ_URI_PERMISSION标记放到传递给Context.startActivity()方法的Intent参数中。这样权限就被授予了Intent对象中所指定的URI。

若是要启用这个功能,既能够经过把这个属性设置为true来完成,也能够经过定义<grant-uri-permission>子元素来实现,在切换RUI时,必须调用Context.revokeUriPermission()方法从提供器把权限删除。

android:icon

这个属性用于定义一个表明内容提供器的图标。它必需要引用一个包含图片定义的可绘制资源。若是这个属性没有设置,那么就会使用应用程序的<application>元素的icon属性值来代替。

android:initOrder

这个属性用于定义内容提供器应该被实例化的顺序,这个顺序是相对与相同进程所拥有的其余内容提供器的。当内容提供器间有相互的依赖时,就须要设置这个属性,以确保它们可以按照其依赖的顺序被建立。这个属性值是一个简单的整数,大的数字要被优先初始化。

Android:label

这个属性用于给内容提供器定义一个用户可读的标签。若是这个属性没有设置,那么它会使用<application>元素的label属性值来代替。

这个标签应该引用一个字符串资源来设置,以便它可以像其余的用户界面中的字符串同样被本地化。可是为了方便应用程序的开发,也可以使用原生的字符串来设置这个属性,但正式发布时必定要引用字符串资源。

android:multiprocess

这个属性用于设定是否可以在每一个使用该内容提供器的客户端进程中都建立一个内容提供器的实例,若是设置为true,这个可以在其每一个客户端进程中建立一个实例,不然不能够。默认值是false。

一般,内容提供器是在定义它的应用程序的进程中被实例化的。可是,若是这个属性被设置为true,系统就可以在每一个要与该内容提供器进行交互的客户端进程中建立一个内容提供器的实例,这样就避免了进程间通讯的开销。

android:name

这个属性用于定义内容提供器的实现类的名称,它是ContentProvider类的一个子类。这个属性应该使用完整的Java类名来设定(如:com.example.project.TransportationProvider)。可是也可使用简写(如:.TransporttationProvider),这时系统会使用<manifest>元素中指定的包名跟这个简写名称的组合来识别内容提供器。

这个属性没有默认值,必需要给这个属性设定一个名称。

android:permission

这个属性用于设定客户端在读写内容提供器的数据时必需要有的权限的名称。这个属性为同时设置读写权限提供了一种便利的方法。可是readPermission和writePermission属性的优先级要比这个属性高。若是readPermission属性也被设置了,那么它就会控制对内容提供器的查询访问。若是writePermission属性被设置,它就会控制对内容提供器数据的修改访问。

android:process

这个属性用于定义内容提供器应该运行在那个进程中的进程名称。一般,应用程序的全部组件都运行在给应用程序建立的默认进程中。它有与应用程序包相同的名称。<application>元素的process属性可以给其全部的组件设置一个不一样的默认进程。可是每一个组件都可以用它们本身的process属性来覆盖这个默认设置,从而容许把应用程序分离到不一样的多个进程中。

若是这个属性值是用“:”开头的,那么在须要这个提供器的时候,系统就会给这个应用程序建立一个新的私有进程,而且对应的Activity也要运行在那个私有进程中。若是用小写字母开头,那么Activity则会运行在一个用这个属性值命名的全局进程中,它提供了对内容提供器的访问权限。这样就容许不一样应用程序的组件可以共享这个进程,从而减小对系统资源的使用。

android:readPermission

这个属性用于设置查询内容提供器的数据时,客户端所必需要有的权限。

android:syncable

这个属性用于设定内容提供器控制下的数据是否要与服务器上的数据进行同步,若是设置为true,则要同步,不然不须要同步。

android:writePermission

这个属性用于设置修改内容提供器的数据时,客户端所必需要有的权限。

相关文章
相关标签/搜索