首页 > 解决方案 > 以编程方式切换 TargetActivity

问题描述

我有一个活动别名导致我的一项活动。

    <activity-alias
        android:name="LauncherOne"
        android:enabled="true"
        android:targetActivity="org.test.app.LauncherActivity">

        <intent-filter>
            <action android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>

    </activity-alias>

我希望能够选择它去哪个活动,那么如何以编程方式更改 targetActivity?我真的找不到解决方法,因为我无法启用/禁用两个不同的目标活动,因为它每次都会忘记默认启动器。而且我还没有找到一种在我的应用程序中不会花费一些性能的方式来切换活动。

标签: androidandroid-manifest

解决方案


我希望能够选择它去哪个活动,那么如何以编程方式更改 targetActivity?

你不能。该信息被烘焙到清单中,并且不能在运行时更改。

解决方法:有一项活动是您的启动器活动。将该活动Theme.Translucent.NoTitleBar用作主题,因此它没有 UI。让该活动根据您选择的任何标准启动“真实”活动,然后finish()自行启动,使其不再位于后台堆栈中。粗略地说,这与应用程序使用的方法相同,该应用程序具有启动屏幕活动,然后决定接下来要执行的活动,只是没有实际的启动屏幕 UI。


推荐阅读