将“android:enabled”指定为 false 的 <activity-alias> 的目的是什么?

问题描述 投票:0回答:1

我正在查看一个应用程序,该应用程序描述了 Android 清单中的多个元素,但“android:enabled”为 false。文档声明属性指定

目标Activity是否可以被系统通过该别名实例化。如果可以的话,“真”,“假”

如果无法实例化活动别名或直接使用 android:name 属性调用它,那么指定活动别名的目的是什么?

android-activity android-manifest android-activity-alias
1个回答
0
投票

<activity-alias>
是 Android Manifest 中的元素,允许您为现有活动创建替代名称。当您希望以不同方式或使用不同设置启动相同的活动时,这非常有用。

假设您有一个名为

ConfigActivity
的 Activity,并且您希望它能够作为应用程序的主要 Activity 启动,以及针对特定任务的单独 Activity。

<application
...>

<!-- Target Activity -->
 <activity
        android:name=".ConfigActivity"
        android:label="Config Activity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

    <!-- Alias for Configuration A -->
    <activity-alias
        android:name=".ConfigAliasA"
        android:enabled="true"
        android:targetActivity=".ConfigActivity">
        <intent-filter>
            <action android:name="com.example.CONFIG_A" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity-alias>

    <!-- Alias for Configuration B -->
    <activity-alias
        android:name=".ConfigAliasB"
        android:enabled="true"
        android:targetActivity=".ConfigActivity">
        <intent-filter>
            <action android:name="com.example.CONFIG_B" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity-alias>

</application>

此设置允许根据收到的意图操作以不同的配置启动

ConfigActivity
,从而为如何在应用程序中使用活动提供灵活性。

  1. 您可以根据用户偏好、应用程序配置或功能标志等条件启用或禁用特定活动(如上面的示例⬆️)
  2. 有时开发人员会包含未来功能的存根。别名可以最初禁用并在将来的更新中启用,而不需要对清单文件进行重大更改
  3. 在开发过程中,您可以暂时禁用特定组件,而无需将其从清单中删除,然后重新启用。
  4. 在某些情况下,某些功能或活动可能仅与某些区域相关。您可以禁用不适用功能的区域的别名
© www.soinside.com 2019 - 2024. All rights reserved.