[Android學習筆記]02–AndroidManifest.xml檔案解析

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.