http://hi.baidu.com/zhulin10541/blog/item/b3ef991818322270dab4bd90.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组件是用来管理数据持久化及数据发布的, 发布的数据可以被其他的应用访问. |