Android - 如何在不删除快捷方式的情况下更改应用程序的入口点?

时间:2014-10-22 23:14:34

标签: android android-activity manifest launcher

因此,在我的应用程序的先前版本中,我有一个名为MainActivity的入口点

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

这个版本,我有一个新的应用程序入口点,然后以编程方式重定向到MainActivity或其他屏幕。以下是两项活动:

    <activity
        android:name=".NewEntryPoint"
        android:label="@string/title_activity_second" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

我从main活动中删除了action.MAIN并将其设置为我的NewEntryPoint。但是,任何将应用程序作为主屏幕快捷方式的用户都将丢失该快捷方式。将启动器类别保留在MainActivity中也没有任何帮助。

有没有办法在不删除快捷方式的情况下更改我的应用程序的入口点?

谢谢!

1 个答案:

答案 0 :(得分:1)

我相信你可以使用activity-alias来解决这个问题,但我会质疑它是否值得将来维护,以避免用户再次为你的应用添加快捷方式。像这样:

<activity-alias
    android:name=".MainActivity"
    android:targetActivity=".NewEntryPoint">

    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>

</activity-alias>