AndroidManifest.xml文件概况
AndroidManifest.xml清单文件是每个Android项目所必需的,它是整个Android应用的全局描述文件。AndroidManifest.xml清单文件说明了该应用的名称、所使用的图标以及包含的组件等。
AndroidManifest.xml清单文件通常可以包含如下信息:
- 应用程序的包名,该包名将会作为该应用的唯一标识。
- 应用程序所包含的组件,如Activity、Service、BroadcastReceiver和ContentProvider等。
- 应用程序兼容的最低版本。
- 应用程序使用系统所需的权限声明。
- 其他程序访问该程序所需要的权限声明。
下面看一份简单的AndroidManifest.xml文件。
<?xml version="1.0" encoding="utf-8"?>
<!-- package 指定该应用的包名,该包名可用于唯一地表示该应用
versionCode 版本代号,面向开发人员的
versionName 版本名称,面向用户的
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.fx.theday"
android:versionCode="1"
android:versionName="1.0" >
<!-- minSdkVersion 程序可以运行的最低系统版本
targetSdkVersion 程序可以运行的目标版本
-->
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="18" />
<!-- 声明应用运行需要的权限
这里声明了振动和开机启动的权限
-->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!-- name Application子类的全限定名称。可以缺省。
icon 整个应用的图标,还是每个组件的默认图标。这个属性值必须被设置为drawable资源的引用。没有默认值。
label 应用标签,并且是应用的每个组件的默认标签。
theme 为应用下的组件定义一个引用自样式资源的主题。
-->
<application
android:name="com.fx.theday.app.BaseApplication"
android:icon="@drawable/ic_logo"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<!-- 定义Android应用的一个组件:Activity
name 组件的名称,为组件的包名和类名组合成的全限定类名
-->
<activity
android:name="com.fx.theday.activity.MainActivity"
android:label="@string/app_name" >
<!-- 一个Intent Filter,用来过滤哪些Intent可以启动该Activity
-->
<intent-filter>
<!-- 指定该Activity是程序的入口 -->
<action android:name="android.intent.action.MAIN" />
<!-- 指定加载应用时运行该Activity -->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
在AndroidManifest.xml文件中配置应用程序权限
1.用<uses-permission.../>标签声明权限
一个Android应用可能需要权限才能调用Android系统的功能;一个Android应用也可能被其他应用调用,因此它也需要声明调用自身所需要的权限。
因此,在AndroidManifest.xml文件中可以声明两种权限:
(1). 声明应用正常工作所需要的权限
通过为<manifest.../>元素添加<uses-permission.../>子元素即可声明该应用正常工作所需要的权限。
例如在<manifest.../>元素里添加如下代码:
<!-- 声明应用需要振动的权限-->
<uses-permission android:name="android.permission.VIBRATE" />
(2) 声明调用该应用所需的权限:
通过为应用的各组件元素,如<activity.../>元素添加android:permission属性即可声明调用该程序所需要的权限。
例如在<activity.../>元素里添加如下代码:
<!-- 声明调用该Activity需要发送短信的权限 -->
<activity
android:permission="android.permission.SEND_SMS">
2. 用<permission.../>标签定义自定义权限
Android系统提供了大量的权限,这些权限都位于Manifest.permission类中,在我们的程序中,如果需要调用系统的某个功能,则可能需要声明对应的权限。在大多数情况下,我们并不需要创建自定义的权限,因为系统权限已经涵盖了大多数情况,如果我们一定要创建自定义的权限,我们可以使用<permission.../>标签。
<permission android:description="string resource"
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permissionGroup="string"
android:protectionLevel=["normal" | "dangerous" |
"signature" | "signatureOrSystem"] />
android:name 必填属性,权限的名称。在需要使用该权限的地方用 android.permission="自定义权限名" 来声明,当我们需要访问该权限保护的内容时,就可以使用<uses-permission android:name="自定义权限名" />来申请该权限,就像申请系统权限一样。
android:permissionLevel这个属性是必须声明的,分为普通级别(Normal),危险级别(dangerous),签名级别(signature)和系统/签名级别(signature or system)。对于普通和危险级别的权限,我们称之为低级权限,应用申请即授予。其他两级权限,我们称之为高级权限或系统权限,应用拥有platform级别的认证才能申请。当应用试图在没有权限的情况下做受限操作,应用将被系统杀掉以警示。
android:permissionGroup 非必填属性,用于将权限放到一个组中,对于自定义权限,尽量不要设置此属性。
android:icon非必填属性,权限图标。
android:label 非必填属性,权限标签。
android:description 非必填属性,权限描述。
在AndroidManifest.xml文件中配置Android四大组件
除了Activity之外,Android系统的另外三大组件BroadcastReceiver、ContentProvider和Service都需要在AndroidManifest.xml文件中进行配置,将在介绍这些组件的时候说明如何配置。
转载请指明原文出处:http://blog.csdn.net/fxdaniel/article/details/41643855
参考文章:
http://blog.csdn.net/t12x3456/article/details/7749200
http://blog.csdn.net/lilu_leo/article/details/6940941
http://developer.android.com/training/articles/security-tips.html#Permissions