1、简介
本质:AndroidManifest.xml是整个应用的主配置清单文件。
包含:该应用的包名、版本号、组件、权限等信息。
作用:记录该应用的相关配置文件。
2、全局篇
a、应用的包名以及版本信息的管理。
<!--包名及应用的版本号版本名。由系统自动生成。-->
package="com.example.myandroidmanifest"
android:versionCode="1"
android:versionName="1.0" >
b、控制Android的版本信息(包括可支持的最低版本,以及期望的版本)
<!--可支持的最低版本,期望的系统版本 -->
<!--8和16对应着android的版本 -->
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
3、组件篇
a、一个清单文件只能有一个application节点。可以在其中包含各种各样的组件。
其属性可以设置:图标:android:icon 标题:android:label 主题样式:android:theme
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.myandroidmanifest.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>
</application>
b、Activity组件:任何的Activity都要在清单中定义。启动一个没有在清单中定义的Activity会抛出异常。即程序崩溃。因为程序没有找到对应的Activity组件。
每一个Activity都允许使用<intent-filter></intent-filter>这样的子标签来指定哪个intent来启动该活动。这其实也是组件与组件之间通讯的一种手段。
在Android中,组件与组件之间的通讯是可以在Manifest文件中进行配对的,主要有两种方式。一种方式是,通过组件名称即android:name来找到对应组件。另一种方式是利用过滤器即<intent-filter>通过找到组建的特征来找到需要找到的组件。
<activity
android:name="com.example.myandroidmanifest.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>
c、Service组件:应用程序使用的每一个service name都需要创建一个service标签。他同样允许使用<intent-filter></intent-filter>标签来做它的运行时绑定。
Service组件与Activity组件的区别:Activity可以用来显示界面;Service仅仅是作为后来逻辑代码的处理。
d、Content Provider(内容提供者)组件:内容提供者是用来管理数据库访问以及程序内和程序间的数据共享的。
e、Broadcast Receiver(广播接收者)组件:相当于一个全局事件的全局监听器。一旦在配置文件中注册完,它就相当于一个应用程序内部的全局监听器。一旦它所匹配的intent被广播出来,它就会立即执行。
4、权限篇
a、使用系统权限
<uses-permission>申请权限。声明了哪些是由你定义的权限,而这些权限是应用程序正常执行所必须的。在安装程序的时候, 你设定的所有权限将会告诉给用户,由他们来决定是否同意。
对很多Android服务来说,权限都是必须的,特别是那些需要付费或者有安全问题的服务。(拨号、SMS或者使用基于位置的服务)
5、自定义权限 android:permission=""
作用:保护自己应用的某个组件,而不轻易被其他应用访问。
应用场景:相机扫描二维码,跳转到微信。即相机有唤醒微信的自定义权限。