語法
<activity-alias android:enabled=["true" | "false"]
android:exported=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permission="string"
android:targetActivity="string" >
. . .
</activity-alias>
父元素
<application>
子元素
<intent-filter>
<meta-data>
描述
Activity的別名,由元素的targetActivity屬性命名。作爲別名,它和target activity必須在相同的應用中,而且在manifest文件中target activity必須在別名之前就被聲明。
這個別名意味着這個target activity會作爲獨立的實體。它有它自己的一套intent filters,而不是target activity自身的intent filters,通過這個別名這些intent filters決定那些intents能激活這個target以及系統會如何處理這個別名。例如,在這個別名中的intent filter可以指定“android.intent.action.MAIN”和“android.intent.category.LAUNCHER”標記,這就會導致即使在這個target activity自身也設置了這些標記,而在應用啓動時卻激活的是這個別名。
除了targetActivity,<activity-alias>屬性是<activity>屬性的子集。對於子集內的屬性來說,對這個target activity沒有設置的值會被轉嫁到別名上。然而,對於沒有在子集內的屬性來說,對這個target activity設置的值也會應用到別名。
屬性
android:enabled
是否這個target activity能被系統通過這個別名初始化,若能則爲true,否則爲false。默認值是“true”。
<application>元素有它自身的enabled屬性,這個屬性將被應用到所有的應用組件,包括activity別名。如果系統要通過別名初始化這個target activity,那麼<application>和<activity-alias>屬性都必須爲“true”。如果有一個爲false,那麼這個別名就不會工作。
android:exported
是否其它應用的組件能通過這個別名啓動這個target activity,若能則爲true,否則爲false。若爲“false”,則這個target activity只能通過同一個應用的組件或具有相同用戶ID的applications啓動。
默認值依賴於是否別名包含過濾器。過濾器的缺乏意味着這個activity只能通過由這個別名的精確名稱指定的別名調用。這意味着這個別名只能在應用內部被調用(因爲其他應用不知道別名的名稱)-因此默認值爲false。另一方面,至少存在一個過濾器意味着這個別名可以在外部被調用-因此默認值爲true。
android:icon
通過別名呈現給用戶時這個target activity的圖標。查看<activity>元素的icon屬性可以獲取更多相關信息。
android:label
通過別名呈現給用戶時這個讓用戶可讀的別名的名稱。更多信息參見<activity>元素的label屬性。
android:name
這個別名的唯一的名稱。這個名稱類似於完整的類名。然而,和target activity的名稱不同的是,這個別名可以是任意的;它不引用實實在在的類。
android:permission
客戶端通過別名啓動target activity或處理某些操作時的權限的名稱。如果沒有爲startActivity()或startActivityForResult()的調用者授予特定的權限,那麼這個target activity就不會被激活。
這個屬性可以替換target activity自身的一切權限設置。如果沒有設置,那麼通過這個別名激活target activity時就不需要權限。
android:targetActivity
能通過別名激活的activity的名稱。這個名稱必須匹配<activity>元素的name屬性,在manifest文件中這個<activity>位於別名之前。
出處
API Level 1