我在 Google Play 商店中发布了一个应用程序“传感器记录”。它有两种变体:“Lite”(免费)和“Pro”(完整功能)。在软件内部,它们以不同的风格区分,并且每个都有一个独特的图标,上面有相关的文字。下载并安装后,相关的快捷方式图标(=启动器图标?)会放置在主屏幕上。
到目前为止,这两种变体都可以在 Play 商店中单独下载。现在,我想将升级功能与应用内计费集成,以便 Lite 版本的用户可以根据需要轻松更改到更高级别。其背后的逻辑已经准备好、经过测试并且可以完美运行(但尚未上传到 Play 商店)。实际的变体和版本可以在应用程序的标题中看到。
到目前为止,一切都很好。但是,启动器图标保持不变。当然,我想在升级成功后以编程方式替换它。
我知道谷歌已经通过 Android O(API 级别 26)更改了该机制,请求用户交互进行某些操作。因此,多年前的古老线程不再起作用,例如如何在 Android 中以编程方式更改应用程序图标? 根据谷歌的文档https://developer.android.com/guide/topics/ui/shortcuts/creating-shortcuts#java,我尝试了以下代码:
// preparation
Context appContext = context.getApplicationContext();
Class myClass = context.getClass();
String appName = context.getString(R.string.app_name);
// try to replace the icon
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) // Android 8.0 "Oreo" (SDK 26)
{
Intent intent = new Intent(appContext, myClass);
intent.setAction(Intent.ACTION_MAIN);
ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat
.Builder(context,"dynamic-shortcut")
.setShortLabel(appName)
.setIcon(IconCompat.createWithResource(context, R.drawable.iconpro)) // <== the new icon to replace the existing one
.setIntent(intent)
.build();
ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);
}
但是什么也没有发生——没有用户交互,没有更新启动器图标。我究竟做错了什么?