【发布时间】:2012-11-20 12:40:02
【问题描述】:
我已采用旧版应用程序进行完全重写,因此,开始的活动已被重命名。为了应对用户从他们的主屏幕放置到我的应用程序的快捷方式,我添加了一个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 添加到两个活动名称会保留主屏幕快捷方式,但会在应用程序列表中显示两个应用程序。
如何迁移并让所有用户满意?
【问题讨论】:
-
应用程序根本没有出现的问题似乎是 4.2 模拟器特有的。我无法在其他设备或 4.1 模拟器上重现它。然而,启动快捷方式消失了。
标签: android android-manifest android-launcher