<活動別名>

語法:
<activity-alias android:enabled=["true" | "false"]
                android:exported=["true" | "false"]
                android:icon="drawable resource"
                android:intentMatchingFlags=["none" | "enforceIntentFilter" | "allowNullAction"]
                android:label="string resource"
                android:name="string"
                android:permission="string"
                android:targetActivity="string" >
    ...
</activity-alias>
包含於:
<application>
可包含:
<intent-filter>
<meta-data>
<property>
說明:
活動的別名,以 targetActivity 屬性命名。目標必須與別名位於相同的應用程式中,且必須在別名之前在資訊清單中宣告。

別名會將獨立活動顯示為獨立實體,並且可擁有專屬的一組意圖篩選器。與目標活動本身擁有的意圖篩選器不同,它們會自行確定哪些意圖可以透過別名啟用目標,以及系統處理別名的方式。

舉例來說,即使目標活動本身上的所有篩選器皆未設定「"android.intent.action.MAIN"」和「"android.intent.category.LAUNCHER"」標記,別名上的意圖篩選器也可以指定這些標記,使其出現在應用程式啟動器中。

targetActivity 是例外情況,<activity-alias> 屬性是 <activity> 屬性的子集。對於該子集中的屬性,為目標設定的所有值都不會沿用到別名上。但是,對於不在該子集中的屬性,為目標活動設定的值也會套用至別名。

屬性:
android:enabled
指出系統能否透過此別名將目標活動例項化。"true" 表示可以,"false" 表示不可以。預設值為 "true"

<application> 元素有專屬的 enabled 屬性,會套用至所有應用程式元件,包括活動別名。只有在 <application><activity-alias> 屬性皆為 "true" 時,系統才能透過別名將目標活動例項化。如果任一屬性為 "false",別名將無法運作。

android:exported
其他應用程式的元件能否透過這個別名啟動目標活動。"true" 表示可以,"false" 表示不可以。如果設為 "false",則只有以下元件能透過別名啟動目標活動:與別名位於相同應用程式的元件,或應用程式具備相同使用者 ID 的元件。

預設值取決於別名是否包含意圖篩選器。沒有任何篩選器時,只能指定別名的確切名稱,透過別名叫用活動。這表示別名僅供應用程式內部使用,因為其他應用程式不知道該名稱。因此,預設值為 "false"。另一方面,若出現至少一個篩選器,表示別名會用於外部用途,因此預設值為 "true"

android:icon
透過別名向使用者顯示時,目標活動的圖示。詳情請參閱 <activity> 元素的 icon 屬性。
android:intentMatchingFlags

使用這項屬性微調系統將傳入意圖與應用程式元件比對的方式。根據預設,系統不會套用任何特殊比對規則。

<activity-alias> 代碼中設定的值會覆寫目標 <activity> 中設定的值,或從該特定別名的 <application> 繼承的值。如果別名未明確定義,就會繼承目標活動或應用程式的行為。

這個值必須是下列一或多個旗標,並以「|」分隔:

檢舉 說明
none 停用所有傳入意圖的特殊比對規則。指定多個旗標時,系統會優先採用 none 旗標的值,解決值衝突的問題。
enforceIntentFilter

對傳入的意圖強制執行更嚴格的比對:

  • 明確意圖必須與目標元件的意圖篩選器相符。
  • 沒有動作的意圖不符合任何意圖篩選器。
allowNullAction

放寬比對規則,允許比對沒有動作的意圖。 這個旗標會與 enforceIntentFilter 搭配使用,以達成下列行為:

  • 明確意圖必須與目標元件的意圖篩選器相符。
  • 沒有動作的意圖可以與任何意圖篩選器相符。

詳情請參閱 Android 16 (API 級別 36) 行為變更中的「更安全的 Intent」一節。

android:label
透過別名向使用者顯示時,別名的使用者可讀標籤。詳情請參閱 <activity> 元素的 label 屬性。
android:name
別名的專屬名稱。與完整類別名稱類似。與目標活動的名稱不同,別名是任意的,不會參照實際類別。
android:permission
權限名稱,用戶端必須具有該權限才能啟動目標活動,或透過別名執行某些操作。如果 startActivity()startActivityForResult() 的呼叫端未獲得指定權限,則系統不會啟動目標活動。

該屬性會取代目標活動本身的任何權限設定。如未設定此屬性,則無需權限即可透過別名啟動目標。

如要進一步瞭解權限,請參閱應用程式資訊清單總覽中的「權限」一節。

android:targetActivity
可透過別名啟動的活動名稱。這個名稱必須與資訊清單中別名前方 <activity> 元素的 name 屬性相符。
導入版本:
API 級別 1
另請參閱:
<activity>