Android项目目录结构介绍(续)——AndroidManifest.xml文件介绍

来源:互联网 发布:手机淘宝旺旺不能聊天 编辑:程序博客网 时间:2024/05/21 01:48

AndroidManifest.xml文件概况

AndroidManifest.xml清单文件是每个Android项目所必需的,它是整个Android应用的全局描述文件。AndroidManifest.xml清单文件说明了该应用的名称、所使用的图标以及包含的组件等。

AndroidManifest.xml清单文件通常可以包含如下信息:

  • 应用程序的包名,该包名将会作为该应用的唯一标识。
  • 应用程序所包含的组件,如Activity、Service、BroadcastReceiver和ContentProvider等。
  • 应用程序兼容的最低版本。
  • 应用程序使用系统所需的权限声明。
  • 其他程序访问该程序所需要的权限声明。
不管是Eclipse的ADT工具还是android.bat命令,它们所创建的Android项目都有一个AndroidManifest.xml文件。随着项目地开发,需要对AndroidManifest.xml文件进行适当地修改。

下面看一份简单的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

http://www.linuxidc.com/Linux/2012-02/53081.htm

0 0
原创粉丝点击