此文件一個重要的地方就是它所包含的intent-filters。這些filters描述了activity啟動的位置和時間。每當一個activity(或者操作系統)要執行一個操作,例如:打開網頁或聯系簿時,它創建出一個intent的對象。它能承載一些信息描述了你想做什么,你想處理什么數據,數據的類型,和一些其他信息。Android比較了intent對象中和每個application所暴露的intent-filter中的信息,來找到最合適的activity來處理調用者所指定的數據和操作。關于intent的更多信息請訪問Intent參考頁面。
除了能聲明你程序中的Activities, Content Providers, Services, 和Intent Receivers,你還能指定permissions和instrumentation(安全控制和測試)在AndroidManifest.xml文件中。請見AndroidManifest標記和屬性的參考。
這是一個簡單的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>
值得一提一些常用之處:
這里是AndroidManifest.xml文件結構的一個詳細的列表,描述了所有能被使用的標記。
根節點,描述了package中所有的內容。在它之下能放置:
請求你的package正常運作所需賦予的安全許可。見Security Model來獲得許可的更多的信息。一個manifest能包含零個或更多此元素。
聲明了安全許可來限制哪些程序能你package中的組件和功能。見Security Model來獲得許可的更多的信息。一個manifest能包含零個或更多此元素。
聲明了用來測試此package或其他package指令組件的代碼。見Instrumentation來獲得許可的更多的信息。一個manifest能包含零個或更多此元素。
包含package中application級別組件聲明的根節點。此元素也可包含application中全局和默認的屬性,如標簽,icon,主題,必要的權限,等等。一個manifest能包含零個或一個此元素(不允許多余一個)。在它之下能放置零個或更多下列組件聲明:
Activity是用來與用戶交互的主要工具。當用戶打開一個應用程序的初始頁面時一個activity,大部分被使用到的其他頁面也由不同的activity所實現并聲明在另外的activity標記中。
注意:每一個activity必須要一個<activity>標記對應,無論它給外部使用或是只用于自己的package中。如果一個activity沒有對應的標記,你將不能運行它。
另外,為了支持運行時遲查找你的activity,你能包含一個或多個<intent-filter>元素來描述你activity所支持的操作:
聲明了指定的一組組件支持的Intent值,從而形成了IntentFilter。除了能在此元素下指定不同類型的值,屬性也能放在這里來描述一個操作所需的唯一的標簽,icon和其它信息。
組件支持的Intent data MIME type.
組件支持的Intent data URI scheme.
組件支持的Intent data URI authority.
組件支持的Intent data URI path.
IntentReceiver能使的application獲得數據的改變或者發生的操作,即使它當前不在運行。利用activity標記,你能選擇地包含一個或多個receiver所支持的<intent-filter>元素;
Service是能在后臺運行任意時間的組件。利用activity標記,你能選擇地包含一個或多個receiver所支持的<intent-filter>元素;
ContentProvider是用來管理持久化數據并發布給其他應用程序使用的組件。