AndroidManifest.xml文件解析
你在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明,也可以重新指定你创建项目时指定的程序最低兼容版本和目标版本。
没有在AndroidManifest.xml文件里注册的活动是不能使用的。
每个安卓应用程序必须有一个AndroidManifest.xml文件,在其根目录res下。它在简单的Android系统的应用提出了重要的信息,信息系统必须具备之前,它可以运行任何应用程序的代码。除其他事项外,清单中执行下列操作:
- 它命名为应用程序的Java包。包的名称作为一个应用程序的唯一标识符。
- 它描述了应用程序的组件-的活动,服务,广播接收机,内容提供商,应用程序组成。它命名的类,实现每个组件,并出版自己的能力(例如,他们可以处理哪些意图的消息)。这些声明让Android系统知道的组件是什么和在什么条件下,他们可以推出。
- 它决定哪些进程将主机应用程序组件。
- 它宣称,应用程序必须有权限才能访问受保护的API部分,并与其他应用程序进行交互。
- 它还宣布,其他人则需要以与应用程序的组件交互的权限。
- 它列出了仪器仪表类,提供了分析和其他信息的应用程序正在运行。这些声明是在清单中,只有当应用程序正在开发和测试;申请公布之前,他们正在拆除。
- 它宣布的Android API的应用程序需要的最低水平。
- 它列出了库,应用程序必须与配对。
AndroidManifest.xml文件的结构、元素,以及元素的属性,可以在AndroidSDK文档中查看详细说明。而在看这些众多的元素以及元素的属性前,需要先了解一下这些元素在命名、结构等方面的规则:
- 元素:在所有的元素中只有和是必需的,且只能出现一次。如果一个元素包含有其他子元素,必须通过子元素的属性来设置其值。处于同一层次的元素,这些元素的说明是没有顺序的。
- 属性:按照常理,所有的属性都是可选的,但是有些属性是必须设置的。那些真正可选的属性,即使不存在,其也有默认的数值项说明。除了根元素的属性,所有其他元素属性的名字都是以android:前缀的;
- 定义类名:所有的元素名都对应其在SDK中的类名,如果你自己定义类名,必须包含类的数据包名,如果类与application处于同一数据包中,可以直接简写为“.”;
- 多数值项:如果某个元素有超过一个数值,这个元素必须通过重复的方式来说明其某个属性具有多个数值项,且不能将多个数值项一次性说明在一个属性中;
- 资源项说明:当需要引用某个资源时,其采用如下格式:
@[package:]type:name
。
- 例如
<activityandroid:icon=”@drawable/icon ” . . .>
- 例如
- 字符串值:类似于其他语言,如果字符中包含有字符“\”,则必须使用转义字符“\”。
参考:
- 专家专栏:AndroidManifest.xml文件详解
- manifest
- AndroidManifest详解之Application(有图更好懂)
- Android学习笔记之AndroidManifest.xml文件解析
四大组件
- 活动(Activity)
Android应用程序的门面,凡是在应用中看到的东西,都是放在活动中的。 - 服务(Service)
无法看到他,在后台默默运行,即使用户退出了应用,服务仍然是可以继续运行的。 - 广播接收器(Broadcast Receiver)
允许你的应用接收来自各处的消息,比如电话,短信,微信,qq等,他也可以向外发出广播消息。 - 内容提供器(Content Provider)
为应用程序之间共享数据提供了可能,比如你想要读取系统电话簿中的联系人,就需要通过内容提供器来实现。
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Another"
android:label="@string/title_activity_another" >
</activity>
</application>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
这几行代码非常重要,<action android:name="android.intent.action.MAIN" />
和<category android:name="android.intent.category.LAUNCHER" />
表示这个activity是这个项目的主活动,在手机上点击应用图标,首先启动的就是这个活动。