我采用了一个旧版应用程序进行完全重写,因此,开始的活动已被重命名。为了应对用户从他们的主屏幕放置了我的应用程序的快捷方式,我添加了一个activity-alias
从旧名称指向新名称的指针。
之前:
<activity
android:name=".SplashScreenActivity"
android:theme="@style/Theme.Styled.NoAnimation" />
现在:
<activity
android:name=".activities.StartActivity_"
android:theme="@style/Theme.Styled.NoAnimation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity-alias
android:name=".SplashScreenActivity"
android:exported="true"
android:targetActivity=".activities.StartActivity_"/>
这适用于我在 2.1 和 4.0 之间测试的各种设备。但是,在 Jelly Bean(4.1 和 4.2)上,我看到默认启动器现在正在删除启动图标。
更糟糕的是,在某些测试中,升级并没有显示任何应用程序,只是在第二次安装时从应用程序列表中显示它。似乎没有韵律或理由;有时应用程序会丢失。
我玩过交换IntentFilter
:
<activity
android:name=".activities.StartActivity_"
android:theme="@style/Theme.Styled.NoAnimation" />
<activity-alias
android:name=".SplashScreenActivity"
android:exported="true"
android:targetActivity=".activities.StartActivity_" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
亚行似乎不太喜欢这样:
未找到启动器活动!
启动只会同步设备上的应用程序包!
为了完整起见:在IntentFilter
两个活动名称中添加 会保留主屏幕快捷方式,但会在应用程序列表中显示两个应用程序。
如何迁移并让所有用户满意?