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組件是用來管理資料持久化及資料發布的, 發布的資料可以被其他的應用訪問.