AdroidManifest文件介绍

每一个 Android 应用程序包含一个 manifest 文件 ——AndroidManifest.xml ,保存在工程的根目录中。该文件定义了应用程序的结构和元数据以及它们的组件。它包含组件( ActivityServiceContent ProviderBroadcast Receiver )的节点,这些组件构成了整个应用程序。并且使用 Intent FilterPermission ,来决定如何相互影响以及对其他应用程序的影响。它同样提供了特性来指定应用程序的元数据(像 icon 或者 theme 等),另外,还提供了高层节点用来安全设定和单元测试。如下描述:

manifest 文件由 <manifest/> 标签作为根,包含了 package 特性,来设定工程的包名。它通常还包含 xmlns:android 特性,来导入命名空间,提供一些系统特性。一个典型的 manifest 节点如下面的 XML 片段所示:  

<manifest xmlns:android=http://schemas.android.com/apk/res/android

package=”com.my_domain.my_app”>

[ ... manifest nodes ... ]

</manifest> 

<manifest/> 标签包含了应用程序组成部分的节点,它们是应用程序的组件,安全设定和测试类。下面的列表给出了可获得的 manifest 标签节点的概要以及 XML 片段的演示:  

application

manifest 文件只能包含一个 application 节点。通过特性设定,指明了应用程序的 titleicontheme 等元数据。同时,它又可以表现为一个容器,容纳 ActivityServiceContent ProviderBroadcast Receiver 的标签。  

<application android:icon=”@drawable/icon”

android:theme=”@style/my_theme”>

[ ... application nodes ... ]

</application> 

activity

应用程序中显示的 Activity 都需要定义一个 activity 标签,通过 android:name 特性来指定类名。它必须包含启动 Activity 和其他一些屏幕或对话框中用到的 Activity 。尝试启动一个没有在 manifest 中定义的 Activity 会引发一个运行时异常。每一个 Activity 节点支持 intent-filter 子标签来指定哪些 Intents 启动 Activity 

<activity android:name=”.MyActivity” android:label=”@string/app_name”>

<intent-filter>

<action android:name=”android.intent.action.MAIN” />

<category android:name=”android.intent.category.LAUNCHER” />

</intent-filter>

</activity> 

service

activity 标签一样,为应用程序中用到的 ServiceService 的细节将在第 8 章描述)类定义一个 service 标签。 service 标签同样支持 Intents-filter 子标签,用来允许后期运行时的绑定。  

<service android:enabled=”true” android:name=”.MyService”></service> 

  provider

provider 标签用来标明应用程序中的 Content ProviderContent Provider 用来管理数据库的存取以及应用程序间的共享(第 6 章中有练习)。  

<provider android:permission=”com.paad.MY_PERMISSION”

android:name=”.MyContentProvider”

android:enabled=”true”

android:authorities=”com.paad.myapp.MyContentProvider”>

</provider> 

receiver

通过添加 receiver 标签,你可以在还未启动应用程序之前注册一个 Broadcast Receiver 。如你在第 5 章中所见, Broadcast Receiver 就像一个全局的事件监听者,一旦注册,就会在应用程序广播相应的 Intents 时执行。通过在 manifest 中注册 Broadcast Receiver ,当相应的 Intent 被广播了,应用程序就会自动地启动,并且注册的 Broadcast Receiver 会运行。  

<receiver android:enabled=”true”

android:label=”My Broadcast Receiver”

android:name=”.MyBroadcastReceiver”>

</receiver> 

uses-permission

作为安全模型的一部分, uses-permission 标签申明了应用程序正确运作所需要的授权。这些授权,包括在安装期间用户是否有权操作。设备本身中包含的许多 Android 服务需要授权,尤其是那些需要花钱或安全相关的服务(例如电话,收发 SMS ,或使用本地的服务等)。如下所示,第三方程序,包括你的,在提供共享的程序组件的使用权力之前都可以指定授权。  

<uses-permission android:name=”android.permission.ACCESS_LOCATION”>

</uses-permission> 

permission

在你限制应用程序组件的使用之前,你需要在 manifest 文件中定义一个授权。使用 permission 标签创建授权定义。应用程序组件通过增加 android:permission 特性来使用它。其他应用程序在使用那些后保护的组件之前,也需要在各自的 manifest 文件中包含 uses-permission

使用 permission 标签,你可以指定授权的等级( normal, dangerous, signature, signatureOrSystem ),标签以及描述(定义在外部资源的字符串,解释得到授权的风险)等。

 <permission android:name=”com.paad.DETONATE_DEVICE”

android:protectionLevel=”dangerous”

android:label=”Self Destruct”

android:description=”@string/detonate_description”>

</permission> 

instrumentation

Instrumentation 类为运行时测试 ActivityService 提供了框架。它们提供了钩子,用来监视应用程序以及和系统资源的交互。为程序中定义的测试类创建节点。  

<instrumentation android:label=”My Test”

android:name=”.MyTestClass”

android:targetPackage=”com.paad.aPackage”>

</instrumentation> 

关于 manifest 和每个节点的更加详细描述参见:

http://code.google.com/android/devel/bblocks-manifest.html  

ADT 的新工程向导在创建新工程的同时自动的创建了 manifest 文件。当你为应用程序引入新的组件时,才会回到 manifest 文件中来。

一个来自 Multiplication 例程的 AdroidManifest.xml 文件


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值