<?xml version="1.0" encoding="utf-8"?>
Android Manifest 的xml语言描述的开头。?xml 这里是申明文件类型,这申明的是XML文件,同时描述了 版本和支持的编码格式。
xmlns:android
定义android命名空间,一般为http://schemas.android.com/apk/res/android,这样使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据。
package
指定本应用内java主程序包的包名,它也是一个应用进程的默认名称
<application>
一个
AndroidManifest.xml
中必须含有一个
Application
标签,这个标签声明了每一个应用程
序的组件及其属性
(
如
icon,label,permission
等
)
一个
AndroidManifest.xml
中必须含有一个
Application
标签,这个标签声明了每一个应用程
序的组件及其属性
(
如
icon,label,permission
等
)
一个AndroidManifest.xml中必须含有一个Application标签,这个标签声明了每一个应用程序的组件及其属性(如icon,label,permission等),应用配置的根元素,包含所有与应用有关配置的元素,其属性可以作为包含默认属性的子元素,常用的属性包括:应用名android:label,应用图标android:icon,应用主题android:theme等。子元素:
android:name
为应用程序所实现的Application子类的全名。当应用程序进程开始时,该类在所有应用程序组件之前被实例化。
若该类(比方androidMain类)是在声明的package下,则可以直接声明android:name="androidMain",但此类是在package下面的子包的话,就必须声明为全路径或android:name="package名称.子包名成.androidMain"
android:process
应用程序运行的进程名,它的默认值为<manifest>元素里设置的包名,当然每个组件都可以通过设置该属性来覆盖默认值。如果你想两个应用程序共用一个进程的话,你可以设置他们的android:process相同,但前提条件是他们共享一个用户ID及被赋予了相同证书的时候
android:taskAffinity
拥有相同的affinity的Activity理论上属于相同的Task,应用程序默认的affinity的名字是<manifest>元素中设定的package名。
android:theme
是一个资源的风格,它定义了一个默认的主题风格给所有的activity,当然也可以在自己的theme里面去设置它,有点类似style。
<activity>
Activity的声明标签,《?是application的一子元素》,Android应用中的每一个Activity都必须在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity。<activity>标签中常用的属性有:Activity对应类名android:name,对应主题android:theme,加载模式android:launchMode,键盘交互模式android:windowSoftInputMode。另外,<activity>标签还可以包含<intent-filter>元素,当然还有可用于存储预定义数据的<meta-data>元素。
<activity-alias>
Activity组件别名的声明标签,简单来说就是Activity的快捷方式,属性android:targetActivity表示的就是其相关的Activity名,当然必须是前面已经声明过的Activity。Activity别名也是一个独立的Activity,可以拥有自己的<intent-filter>和<meta-data>元素。
<intent-filter>
<intent-filter>元素可以放在<activity>、<activity-alias>、<service>和<receiver>元素标签中,来区分可用于处理消息的Activity控制器、Service服务和广播接收器Broadcast Receiver。另外,我们还知道Intent消息还包含有名称、动作、数据、类别等几个重要属性。这点与该标签的写法也有一定的关系,比如<intent-filter>中必须包含有<action>元素,即用于描述具体消息的名称;<category>标签则用于表示能处理消息组件的类别,即该Action所符合的类别;而<data>元素则用于描述消息需要处理的数据格式,我们甚至还可以使用正则表达式来限定数据来源。
<meta-data>
用于存储预定义数据,和<intent-filter>类似,<meta-data>也可以放在<activity>、<activity-alias>、<service>和<receiver>这四个元素标签中。Meta数据一般会以键值对的形式出现,个数没有限制,而这些数据都将被放到一个Bundle对象中,程序中我们则可以使用ActivityInfo、ServiceInfo甚至ApplicationInfo对象的metaData属性中读取。
<service>
Service服务组件的声明标签,用于定义与描述一个具体的Android服务,主要属性有:Service服务类名android:name,服务图标android:icon,服务描述android:label以及服务开关android:enabled等。
<receiver>
Boardcast Receiver广播接收器组件的声明标签,用于定义与描述一个具体的Android广播接收器,其主要属性和<service>标签有些类似:Boardcast Receiver接收器类名android:name,接收器图标android:icon,接收器描述android:label以及接收器开关android:enabled等。
<provider>
<provider>标签除了和其他组件相同的android:name、android:icon和android:label等基础属性之外,还提供了用于支持其功能的特殊属性,如:内容提供者标识名称android:authorities,对指定URI授予权限标识android:grantUriPermission以及具体的读、写权限,即android:readPermission和android:writePermission等。
<permission>和 <uses-permission> 以及<application> 都是同级的,
<permission> 是定义应用的权限,如:
android:permission="com.android.testpermission"
<uses-permission>是声明应用需要访问权限,如:
<uses-permission android:name="com.android.testpermission"></uses-permission>