android - <activity-alias>清单标记

Jak*_*ake 5 android android-activity

在Android中,<activity-alias>的目的是什么?从文档中看来,它只是现有<activity>的另一个名称,其intent intent会覆盖目标活动的过滤器(到目前为止我的理解).

它的实际用途是什么?

调用者是否可以向目标和别名发送意图?

Com*_*are 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>移至a <activity-alias>,以便您可以单独禁用它.文档中对此进行了更详细的介绍.

TL; DR:我怀疑许多开发人员使用<activity-alias>它,尽管它有它的用例(例如,你的问题评论中引用的启动器).

调用者是否可以向目标和别名发送意图?

嗯,如果那样,你的意思是"我可以startActivity()用来启动活动或别名吗?",然后,是的.