以编程方式切换TargetActivity

时间:2018-06-30 14:49:56

标签: android android-manifest

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

    <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? 我真的找不到解决方法,因为我无法启用/禁用两个不同的targetactivities,因为它每次都会忘记默认的启动器。 而且我还没有找到一种方法来切换活动,而这种活动不会花费我的应用程序任何性能。

1 个答案:

答案 0 :(得分:0)

  

我希望能够选择要进行的活动,那么如何以编程方式更改targetActivity?

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

解决方法:进行一项活动即启动器活动。让该活动使用Theme.Translucent.NoTitleBar作为主题,因此没有UI。让该活动根据您选择的任何条件启动“真实”活动,然后根据finish()本身启动活动,以使其不再位于后退堆栈中。粗略地说,这与具有启动屏幕活动的应用程序使用的方法相同,该应用程序随后决定了下一步要进行的活动,而没有实际的启动屏幕UI。