AndroidManifest.xml是每一个android程序中必须的文件。它位于application的根目录,描述了package中的全局数据,包括了package中暴露的组件(activities, services, 等等),它们各自的实现类,各类能被处理的数据和启动位置。android
此文件一个重要的地方就是它所包含的intent-filters。这些filters描述了activity启动的位置和时间。每当一个activity(或者操做系统)要执行一个操做,例如:打开网页或联系簿时,它建立出一个intent的对象。它能承载一些信息描述了你想作什么,你想处理什么数据,数据的类型,和一些其余信息。Android比较了intent对象中和每一个application所暴露的intent-filter中的信息,来找到最合适的activity来处理调用者所指定的数据和操做。
除了能声明你程序中的Activities, Content Providers, Services, 和Intent Receivers,你还能指定permissions和instrumentation(安全控制和测试)在AndroidManifest.xml文件中。安全
这是一个简单的AndroidManifest.xml。并发
< ?xml version="1.0" encoding="utf-8"?>app
< manifest xmlns:android="http://schemas.android.com/apk/res/android"dom
package="com.my_domain.app.helloactivity">ide
< 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>
值得一提一些经常使用之处:
· 几乎全部的AndroidManifest.xml(以及许多其余Android的xml的文件)在第一个元素中包含了命名空间的声明xmlns:android="http://schemas.android.com/apk/res/android"。这样使得Android中各类标准属性能在文件中使用,提供了大部分元素中的数据。
· 大部分manifests包含了单个< application>的元素,它定义了全部的application级别组件和属性,并能在package中使用。
· 任何被用户看做顶层应用程序,并能被程序启动器所用的package,须要包含至少一个Activity组件来支持MAIN操做和LAUNCHER种类,如上述代码中所见。
这里是AndroidManifest.xml文件结构的一个详细的列表,描述了全部能被使用的标记。
manifest
根节点,描述了package中全部的内容。在它之下能放置:
uses-permission
请求你的package正常运做所需赋予的安全许可。见SecurityModel来得到许可的更多的信息。一个manifest能包含零个或更多此元素。
permission
声明了安全许可来限制哪些程序能你package中的组件和功能。见SecurityModel来得到许可的更多的信息。一个manifest能包含零个或更多此元素。
instrumentation
声明了用来测试此package或其余package指令组件的代码。见Instrumentation来得到许可的更多的信息。一个manifest能包含零个或更多此元素。
application
包含package中application级别组件声明的根节点。此元素也可包含application中全局和默认的属性,如标签,icon,主题,必要的权限,等等。一个manifest能包含零个或一个此元素(不容许多余一个)。在它之下能放置零个或更多下列组件声明:
activity
Activity是用来与用户交互的主要工具。当用户打开一个应用程序的初始页面时一个activity,大部分被使用到的其余页面也由不一样的activity所实现并声明在另外的activity标记中。
注意:每个activity必需要一个< activity>标记对应,不管它给外部使用或是只用于本身的package中。若是一个activity没有对应的标记,你将不能运行它。
另外,为了支持运行时迟查找你的activity,你能包含一个或多个< intent-filter>元素来描述你activity所支持的操做:
intent-filter
声明了指定的一组组件支持的Intent值,从而造成了IntentFilter。除了能在此元素下指定不一样类型的值,属性也能放在这里来描述一个操做所需的惟一的标签,icon和其它信息。
action
组件支持的Intentaction。
category
组件支持的IntentCategory.
type
组件支持的Intentdata MIME type.
schema
组件支持的Intentdata URI scheme.
authority
组件支持的Intentdata URI authority.
path
组件支持的Intentdata URI path.
receiver
IntentReceiver能使的application得到数据的改变或者发生的操做,即便它当前不在运行。利用activity标记,你能选择地包含一个或多个receiver所支持的< intent-filter>元素;
service
Service是能在后台运行任意时间的组件。利用activity标记,你能选择地包含一个或多个receiver所支持的< intent-filter>元素;
provider
ContentProvider是用来管理持久化数据并发布给其余应用程序使用的组件。AndroidManifest.xml是每一个android程序中必须的文件。它位于application的根目录,描述了package中的全局数据,包括了package中暴露的组件(activities, services, 等等),它们各自的实现类,各类能被处理的数据和启动位置。