现在的位置: 首页 > 综合 > 正文

AndroidManifest.xml 文件之详细解析

2013年05月31日 ⁄ 综合 ⁄ 共 2401字 ⁄ 字号 评论关闭

http://hi.baidu.com/babala_234/blog/item/31bd5f124fa233c8c2fd7877.html

 

      AndroidManifest.xml是每一个应用都需要的文件. 位于应用根目录下, 描述了程序包的一个全局变量, 包括暴露的应用组件(activities, services等等)和为每个组件的实现类, 什么样的数据可以操作, 以及在什么地方运行. 
      这个文件的一个重要方面(概念)是其中的intent过滤器. 这个过滤器描述了何时何种情况下让activity 启动. 当一个activity(或是操作系统)想要执行一个动作, 例如打开一个Web页或是打开一个联系人选取屏幕, 会创建一个Intent对象. 该对象包含了很多的描述信息, 描述了你想做什么操作, 你想处理什么数据, 数据的类型, 以及一些其他的重要信息. Android拿这个Intent的信息与所有应用暴露的intent过滤器比较, 找到一个最能恰当处理请求者要求的数据和action的activity. intents的更多信息在Intent页. 
      另外还要声明您的应用的Activities, Content Providers, Services, 和 Intent Receivers, 你也可以在AndroidManifest.xml文件中指定权限和instrumentation(安全控制和测试). 
      一个AndroidManifest.xml文件的例子: 
<?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.my_domain.app.helloactivity">
       <application android:label="@string/app_name">
             <activity class=".HelloActivity">
                <intent-filter>
                    <action android:value="android.intent.action.MAIN"/>
                    <category android:value="android.intent.category.LAUNCHER"/>
                </intent-filter>
            </activity>
       </application>
   </manifest>
      xmlns:android 属性是 XML 名空间声明语句,用来告诉 Android 工具将使用 Android 名空间中定义的公共属性。每个 Android 布局文件的最外层的标签必须有该属性。
      在manifest中,定义多个activity时,系统在启动这个application时,该如何判断哪个activity是入口activity。经过测试发现,在manifest中定义的activity中,如果该activity的action是MAIN属性,并且category 是LAUNCHER属性,那么该activity就是入口程序。如果manifest中有多个这样情况的activity存在,那么系统会将第一个查找到的复合条件的activity作为入口程序。manifest中至少应该有一个复合该条件的activity存在。

AndroidManifest.xml 的结构大纲:

<manifest> 文件根节点, 描述了程序包的所有内容. 
    <uses-permission> 请求一个安全授权, 必须被授予该权限, 您的程序包才能正确的操作.可以包含零个或多个这样的节点. 
    <permission> 声明一个安全授权, 用来限制哪些应用可以访问您的程序包内的组件和特有机制. 可以包含零个或多个这样的节点. 
    <instrumentation>
    <application> 描述程序包内应用级别组件的根节点. 该节点能够描述应用程序的全局(和/或)默认属性, 例如标签, 图标, 主题, 需要的授权, 等等.包含零个或一个这样的节点
        <activity> Activity 是应用于用户交互的最主要机制. 当一个应用运行的时候, 用户看到的第一个屏幕就是activity, 并且, 用户所使用的其他绝大多数屏幕(界面)也会是
            <intent-filter>
            <action> 
            <category> 
            <type> 
            <scheme> 
            <authority> 
            <path> 
        <receiver> 一个IntentReceiver 可以让应用接收到一次数据变化和一次行为发生的通知, 甚至这个应用没有在运行也可以. 同activity 标签一样, 你可以选择包含一个或多个<intent-filter>元素
        <service>Service 是一个在后台任意时刻都可以运行的组件. 同activity 标签一样, 你可以选择包含一个或多个<intent-filter>元素
        <provider>ContentProvider组件是用来管理数据持久化及数据发布的, 发布的数据可以被其他的应用访问.

参考文档:http://www.androidcn.net/wiki/index.php/Devel/bblocks-manifest

抱歉!评论已关闭.