AndroidManifest.xml檔案詳解(二)

來源:互聯網
上載者:User

檔案約定

某些約定和規則普遍適用於清單中的所有元素和屬性:

元素

只用<manifest>和<application>元素時必須的,而且這兩個元素在檔案中只能出現一次。其他元素則可以多次出現在清單中,或者根本就不出現---但是為了構建一個有意義的清單,必須要在清單中聲明某些元素。

一個元素所包含的任何聲明,包括它所包含的其他元素,所有的值都是通過屬性來設定的,而不是用夾在開閉元素之間的字元資料。

相同層級的元素通常是沒有順序的。例如,<activity>、<provider>、<service>元素可以是任意順序的。(<activity-alias>元素是個例外,它必須放在它所代表的<activity>元素的後面。)

屬性

在正式的含義中,所有的屬性都是可選的,但是,為了達成目的,必須要給元素指定一些屬性。對於真正的可選屬性,會指定發生在特殊情況下的預設值或狀態。

除了<manifest>根項目的一些屬性之外,其他所有屬性的命名都帶有android:首碼---例如,android:alwaysRetainTaskState。因為這個首碼是通用的,所以本文檔在提到屬性名稱時,通常會忽略這個首碼。

聲明類名稱

許多元素都對應著Java對象,包括代表應用程式自己的元素<application>,以及基本的組件---<activity>、<service>、<receiver>、<provider>等。

如果要定義子類,那麼這些子類幾乎總是繼承以下組件類:Activity、Service、BroadcastReceiver、ContentProvider。子類是通過name屬性來聲明的。這個名稱必須是完整Java包名。例如,下例示範了Service子類的聲明方法:

<manifest . . .
>
    <application . . .
>
        <service
android:name="com.example.project.SecretService" . . .
>
            . . .
        </service>
        . . .
    </application>
</manifest>

但是,也可以使用簡略的表達方式,用”.”符號做為name屬性值的第一個字元。在Android系統解析是會在”.”符號前追加包名(包名是在<manifest>元素的package屬性中聲明的)。下例的聲明方法與上例的結果相同:

<manifest
package="com.example.project" . . .
>
    <application . . .
>
        <service
android:name=".SecretService" . . .
>
            . . .
        </service>
        . . .
    </application>
</manifest>

在啟動組件時,Android會建立這個命名子類的一個執行個體對象。如果沒有指定子類,那麼就會建立一個基類的執行個體對象。

多個值的設定

如果要給一個元素指定多個值,那麼幾乎總是重複使用這個元素,而不是在一個元素中列出多個值。如:

<intent-filter . . .
>
    <actionandroid:name="android.intent.action.EDIT"/>
    <actionandroid:name="android.intent.action.INSERT"/>
    <actionandroid:name="android.intent.action.DELETE"/>
    . . .
</intent-filter>

資源值的設定

有一些屬性值是能夠顯示給使用者的---例如,Activity的標題和表徵圖。這些屬性值應該被本地化,並因此要設定在資源或主題中。資源值是用下列格式來表示的:@[package:]type:name

如果資源與應用在同一個包中,那麼package的名稱可以被忽略,type是資源的類型---如“string”或“drawable”,name是標識指定資源的名稱。例如:

<activity
android:icon="@drawable/smallPic" . . .
>

來自主題的值是用類似的方式來表示的,但是要以‘?’開始,而不是‘@’:

?[package:]type:name

String值的設定

當屬性值是一個字串是,‘\\’符號要用於字元轉義---如‘\\n’表示在此處換行,‘\\uxxxx’表示‘xxxx’是Unicode字元。

聯繫我們

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