<activity-别名>

语法:
<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>
说明:
activity 的别名,由 targetActivity 属性命名。目标必须与别名位于同一应用中,并在清单中的别名之前进行声明。

别名将目标 activity 呈现为独立的实体,并且可以具有自己的一组 intent 过滤器。这些 intent 过滤器(而不是目标 activity 本身的 intent 过滤器)决定了哪些 intent 可以通过别名激活目标,以及系统如何处理别名。

例如,即使目标 activity 本身所有的过滤器都未设置 "android.intent.action.MAIN""android.intent.category.LAUNCHER" 标志,别名的 intent 过滤器也可以指定这些标志,使其呈现在应用启动器中。

除了 targetActivity 之外,<activity-alias> 属性是 <activity> 属性的子集。对于子集中的属性,为目标设置的任何值都不会沿用于别名。不过,对于不在子集中的属性,为目标 activity 设置的值也会应用于别名。

属性:
android:enabled
确定系统是否可以通过此别名实例化目标 activity。如果可以,则设为 "true",否则设为 "false"。默认值为 "true"

<application> 元素具有自己的 enabled 属性,该属性适用于所有应用组件,包括 activity 别名。<application><activity-alias> 属性必须都设为 "true",系统才能通过别名实例化目标 activity。如果其中任一属性设为 "false",则别名不起作用。

android:exported
确定其他应用的组件是否可以通过此别名启动目标 activity。如果可以,则设为 "true",否则设为 "false"。 如果设为 "false",则只有与别名在同一应用中的组件或具有同一用户 ID 的应用的组件可以通过别名启动目标 activity。

默认值取决于别名是否包含 intent 过滤器。没有任何过滤器时,只有指定别名的确切名称,才能通过别名调用 activity。这意味着别名仅供应用内部使用,因为其他应用不知道其名称。因此,默认值为 "false"。另一方面,如果存在至少一个过滤器,则意味着该别名会供外部使用,所以默认值为 "true"

android:icon
通过别名呈现给用户时,目标 activity 的图标。 如需了解详情,请参阅 <activity> 元素的 icon 属性。
android:intentMatchingFlags

使用此属性可以微调系统将传入 intent 与应用 组件进行匹配的方式。默认情况下,系统不会应用任何特殊匹配规则。

<activity-alias> 标记上设置的值会替换为该特定别名在目标 <activity> 上设置或从 <application> 继承的值。如果未在别名上显式 定义,则它会从目标 activity 或 应用继承行为。

该值必须是以下一个或多个标志,以“|”分隔:

标志 说明
none 停用传入 intent 的所有特殊匹配规则。指定多个标志时,系统会优先使用 none 标志来解决冲突值。
enforceIntentFilter

对传入 intent 强制执行更严格的匹配:

  • 显式 intent 必须与目标组件的 intent 过滤器匹配。
  • 没有操作的 intent 不与任何 intent 过滤器匹配。
allowNullAction

放宽匹配规则,允许没有操作的 intent 进行匹配。 此标志与 enforceIntentFilter 结合使用,以 实现以下行为:

  • 显式 intent 必须与目标组件的 intent 过滤器匹配。
  • 允许没有操作的 intent 与任何 intent 过滤器匹配。

如需了解详情,请参阅 Android 16(API 级别 36)行为变更中的 更安全的 intent 部分。

android:label
通过别名呈现给用户时,别名的用户可读标签。 如需了解详情,请参阅 <activity> 元素的 label 属性。
android:name
别名的唯一名称。该名称类似于完全限定的类名称。与目标 activity 的名称不同,别名名称是任意的。它不引用实际类。
android:permission
客户端要使用别名启动目标 activity 或让其执行某项操作而必须具备的权限的名称。 如果没有向 startActivity()startActivityForResult() 的调用方授予指定的权限,目标 activity 不会激活。

此属性会取代为目标 activity 本身设置的任何权限。如果未设置此属性,则无需权限即可通过别名激活目标。

如需详细了解权限,请参阅应用清单概览中的权限部分。

android:targetActivity
可通过别名激活的 activity 的名称。此名称必须与清单中别名前面的 <activity> 元素的 name 属性匹配。
引入于:
API 级别 1
另请参阅:
<activity>