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, 等等),它們各自的實現類,各類能被處理的數據和啓動位置。