Android開發之Manifest.xml詳解

來源:互聯網
上載者:User

 每一個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> 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.