Android之 AndroidManifest.xml 文件解析(7)

service标签内的属性之前已有描述,在此不重复了~
 
8、第三层<receiver>
 
receiver的属性与service一样,这里就不显示了
 
BroadcastReceiver:用于发送广播,broadcast是在应用程序之间传输信息的一种机制,而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件
 
9、第三层<provider>属性

<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">

<grant-uri-permission/>

<meta-data/>

</provider>

contentProvider(数据存储)
 
【1】android:authorities:
 
标识这个ContentProvider,调用者可以根据这个标识来找到它
 
【2】android:grantUriPermission:
 
对某个URI授予的权限
 
【3】android:initOrder
 
10、第三层<uses-library>
 
用户库,可自定义。所有android的包都可以引用
 
11、第一层<supports-screens>

<supports-screens  android:smallScreens=["true" | "false"]
                  android:normalScreens=["true" | "false"]
                  android:largeScreens=["true" | "false"]
                  android:anyDensity=["true" | "false"] />

这是在android1.6以后的新特性,支持多屏幕机制
 
各属性含义:这四个属性,是否支持大屏,是否支持中屏,是否支持小屏,是否支持多种不同密度
 
12、第二层<uses-configuration />与<uses-feature>性能都差不多

<uses-configuration  android:reqFiveWayNav=["true" | "false"]
                    android:reqHardKeyboard=["true" | "false"]
                    android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" |  "twelvekey"]
                    android:reqNavigation=["undefined" | "nonav" | "dpad" |  "trackball" | "wheel"]
                    android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] />

<uses-feature android:glEsVersion="integer"
              android:name="string"
              android:required=["true" | "false"] />

这两者都是在描述应用所需要的硬件和软件特性,以便防止应用在没有这些特性的设备上安装。

13、第二层<uses-sdk />

<uses-sdk android:minSdkVersion="integer"
          android:targetSdkVersion="integer"
          android:maxSdkVersion="integer"/>


描述应用所需的api level,就是版本,目前是android 2.2 = 8,android2.1 = 7,android1.6 = 4,android1.5=3
 
在此属性中可以指定支持的最小版本,目标版本以及最大版本
 
14、第二层<instrumentation />

<instrumentation android:functionalTest=["true" | "false"]
                android:handleProfiling=["true" | "false"]
                android:icon="drawable resource"
                android:label="string resource"
                android:name="string"
                android:targetPackage="string"/>

定义一些用于探测和分析应用性能等等相关的类,可以监控程序。在各个应用程序的组件之前instrumentation类被实例化
 
android:functionalTest(解释:instrumentation类是否能运行一个功能测试,默认为false)
 
15、<permission>、<uses-permission>、<permission-tree />、<permission-group />区别~
 
最常用的当属<uses-permission>,当我们需要获取某个权限的时候就必须在我们的manifest文件中声明,此<uses-permission>与<application>同级,具体权限列表请看此处
 
通常情况下我们不需要为自己的应用程序声明某个权限,除非你提供了供其他应用程序调用的代码或者数据。这个时候你才需要使用<permission> 这个标签。很显然这个标签可以让我们声明自己的权限。比如:
 
<permission android:name="com.teleca.project.MY_SECURITY" . . . />
 
那么在activity中就可以声明该自定义权限了,如:

<application . . .>

<activity android:name="XXX" . . . >

android:permission="com.teleca.project.MY_SECURITY"> </activity>

</application>


当然自己声明的permission也不能随意的使用,还是需要使用<uses-permission>来声明你需要该权限
 
<permission-group> 就是声明一个标签,该标签代表了一组permissions,而<permission-tree>是为一组permissions声明了一个namespace。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/5795e5eac361758b2f7760cb65256057.html