2014-06-08 64 views
5

在Android中,< activity-alias>的用途是什麼?從documentation看來,它似乎只是現有的<活動的另一個名稱,意圖過濾器會覆蓋目標活動的過濾器(目前爲止我的理解)。android - <activity-alias>清單標記

它的實際用途是什麼?

調用者是否可以向目標和別名發送意圖?

+1

http://blog.danlew.net/2014/01/16/preserve-your-launchers-use-activity-alias/ –

回答

6

它似乎是現有的< activity>帶有意圖過濾器的另一個名稱,它覆蓋了目標活動的過濾器(目前爲止我的理解)。

我把它定義爲「提供額外的過濾器」,比重寫更重要。

它的實際用途是什麼?

您可以禁用組件,如<activity-alias>。你不能禁用<intent-filter>元素(儘管這會非常方便)。

因此,如果你有,你想成爲所有可用的時間的活動,但只有的一些時間提供了一個特定的過濾器(或過濾器),<activity-alias>是給你的。

一個現代化的例子來自新的存儲訪問框架。過去,爲了使文檔可供第三方應用程序使用,您可以實施ACTION_GET_CONTENT活動,並使用<intent-filter>廣告相關的MIME類型(並且可能爲您的供應商提供ContentProvider路徑)。但是,如果您在Android 4.4+上採用存儲訪問框架,則不希望也有ACTION_GET_CONTENT活動可用 - 最終結果是您的所有內容都將顯示兩次。因此,在Android 4.4+設備上,您需要禁用整個活動(如果您不需要其他任何設備),或者將ACTION_GET_CONTENT<intent-filter>移至<activity-alias>,以便您可以單獨禁用它。這在the documentation中有更詳細的介紹。

TL; DR:我懷疑很多開發人員使用<activity-alias>,儘管它有它的用例(例如,在您的問題的評論中引用的啓動程序)。

調用者是否可以向目標和別名發送意圖?

嗯,如果是,你的意思是「我可以使用startActivity()開始在上述活動或別名嗎?」,那麼,是的。

+0

感謝您的回答! :) – Jake