<activity-alias>

语法
<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 属性命名。目标 Activity 必须与此别名在同一个应用中,并且必须在清单文件中在此别名之前声明。

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

例如,此别名上的 Intent 过滤器可能指定 "android.intent.action.MAIN""android.intent.category.LAUNCHER" 标志,使其显示在应用启动器中,即使目标 Activity 本身没有任何过滤器设置这些标志。

除了 targetActivity 之外,<activity-alias> 属性是 <activity> 属性的子集。对于子集中的属性,为目标 Activity 设置的值不会传递给此别名。但是,对于不在子集中的属性,为目标 Activity 设置的值也适用于此别名。

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

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

android:exported
其他应用的组件是否可以通过此别名启动目标 Activity。如果是,则为 "true";否则为 "false"。如果为 "false",则目标 Activity 只能通过此别名所在的相同应用或具有相同用户 ID 的应用中的组件启动。

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

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

android:name
此别名的唯一名称。该名称类似于完全限定类名。但是,与目标 Activity 的名称不同,此别名是任意的。它不指代实际类。

android:permission
客户端必须拥有的权限名称,才能通过此别名启动目标 Activity 或使其执行某些操作。如果 startActivity()startActivityForResult() 的调用方未被授予指定权限,则目标 Activity 不会被激活。

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

如需了解权限的更多信息,请参阅应用清单概览中的“权限”部分。

android:targetActivity
可以通过此别名激活的 Activity 的名称。此名称必须与清单文件中在此别名之前声明的 <activity> 元素的 name 属性匹配。

引入于
API 级别 1
另请参阅
<activity>