每一個Android項目都包含一個清單(Manifest)檔案--AndroidManifest.xml,它儲存在項目層次中的最底層。清單可以定義應用程式及其組件的結構和中繼資料。 它包含了組成應用程式的每一個組件(活動、服務、內容提供器和廣播接收器)的節點,並使用Intent過濾器和許可權來確定這些組件之間以及這些組件和其他應用程式是如何互動的。 它還提供了各種屬性來詳細地說明應用程式的中繼資料(如它的表徵圖或者主題)以及額外的可用來進行安全設定和單元測試頂級節點,如下所述。 清單由一個根manifest標籤構成,該標籤帶有一個設定項目包的package屬性。它通常包含一個xmlns:android屬性來提供檔案內使用的某些系統屬性。下面的XML程式碼片段展示了一個典型的聲明節點: Java代碼:1<manifest xmlns:android=http://schemas.android.com/apk/res/android package="com.my_domain.my_app"> [ ... manifest nodes ... ] </manifest> manifest標籤包含了一些節點(node),它們定義了應用程式組件、安全設定和組成應用程式的測試類別。下面列出了一些常用的manifest節點標籤,並用一些XML程式碼片段說明了它們是如何使用的。 application 一個清單只能包含一個application節點。它使用各種屬性來指定應用程式的各種中繼資料(包括標題、表徵圖和主題)。它還可以作為一個包含了活動、服務、內容提供器和廣播接收器標籤的容器,用來指定應用程式組件。 Java代碼:1<application android:icon="@drawable/icon"2android:theme="@style/my_theme"> [ ... application nodes ... ] </application> activity 應用程式顯示的每一個Activity都要求有一個activity標籤,並使用android:name屬性來指定類的名稱。這必須包含核心的啟動Activity和其他所有可以顯示的螢幕或者對話方塊。啟動任何一個沒有在清單中定義的Activity時都會拋出一個運行時異常。每一個Activity節點都允許使用intent-filter子標籤來指定哪個Intent啟動該活動。 Java代碼:1<activity android:name=".MyActivity"2android:label="@string/app_name">3<intent-filter>4<action5android:name="android.intent.action.MAIN" />6<category7android:name="android.intent.category.LAUNCHER" />8</intent-filter>9</activity> provider provider標籤用來說明應用程式中的每一個內容提供器。內容提供器是用來管理資料庫訪問以及程式內和程式間共用的,第6章將會對其進行詳細講述。 Java代碼:1<service androidandroid:enabled="true"android:name=".MyService"></service> provider provider標籤用來說明應用程式中的每一個內容提供器。內容提供器是用來管理資料庫訪問以及程式內和程式間共用的,第6章將會對其進行詳細講述。 Java代碼:1<provider2android:permission="com.paad.MY_PERMISSION"3android:name=".MyContentProvider"4android:enabled="true"5android:authorities="com.paad.myapp.MyContentProvider">6</provider> receiver 通過添加receiver標籤,可以註冊一個廣播接收器(Broadcast Receiver),而不用事先啟動應用程式。廣播接收器就像全域事件監聽器一樣,一旦註冊了之後,無論何時,只要與它相匹配的intent被應用程式廣播出來,它就會立即執行。通過在聲明中註冊一個廣播接收器,可以使這個進程實現完全自動化。如果一個匹配的Intent被廣播了,則應用程式就會自動啟動,並且你註冊的廣播接收器也會開始運行。 Java代碼:1<receiver2android:enabled="true" android:label="My Broadcast Receiver"android:name=".MyBroadcastReceiver">3</receiver> uses-permission 作為安全模型的一部分,uses-permission標籤聲明了那些由你定義的許可權,而這些許可權是應用程式正常執行所必需的。在安裝程式的時候,你設定的所有許可權將會告訴給使用者,由他們來決定同意與否。對很多本地Android服務來說,許可權都是必需的,特別是那些需要付費或者有安全問題的服務(例如,撥號、接收SMS或者使用基於位置的服務)。如下所示,第三方應用程式,包括你自己的應用程式,也可以在提供對共用的程式組件進行訪問之前指定許可權。 Java代碼:1<uses-permission android:name="android.permission.ACCESS_LOCATION"> </uses-permission> permission 在可以限制訪問某個應用程式組件之前,需要在清單中定義一個permission。可以使用permission標籤來建立這些許可權定義。然後,應用程式組件就可以通過添加android:permission屬性來要求這些許可權。再後,其他的應用程式就需要在它們的清單中包含uses-permission標籤(並且通過授權),之後才能使用這些受保護的組件。 在permission標籤內,可以詳細指定允許的存取權限的層級(normal、dangerous、signature,signatureOrSystem)、一個 label屬性和一個外部資源,這個外部資源應該包含了對授予這種許可權的風險的描述。 Java代碼:1<permission2android:name="com.paad.DETONATE_DEVICE"3android:protectionLevel="dangerous"4android:label="Self Destruct"5android:description="@string/detonate_description">6</permission> instrumentation instrumentation類提供一個架構,用來在應用程式運行時在活動或者服務上運行測試。它們提供了一些方法來監控應用程式及其與系統資源的互動。對於為自己的應用程式所建立的每一個測試類別,都需要建立一個新的節點。 Java代碼:1<instrumentation2android:label="My Test"3android:name=".MyTestClass"4android:targetPackage="com.paad.aPackage">5</instrumentation>