ShortcutManager 在即时应用程序中崩溃

ShortcutManager crash in instant apps

当我 运行 我的即时应用程序由于快捷方式功能而崩溃时,请查看带有堆栈跟踪的图像,这是我唯一可以提供的东西,因为我无法提供附加调试器,另一个问题:(

**GroupApplication.class**
override fun onCreate() {
    ...
    ShortcutsHelper.init(this)
    ShortcutsHelper.addSearchShortcut()
}
object ShortcutsHelper {
    lateinit var appContext: Context
    lateinit var shortcutManager: ShortcutManager

    fun init(context: Context) {
        this.appContext = context.applicationContext
        this.shortcutManager = context.getSystemService(ShortcutManager::class.java)
    }

    fun addSearchShortcut() {
        val shortcut = ShortcutInfo.Builder(appContext, SEARCH_SHORTCUT_ID)
                .setShortLabel(appContext.getString(R.string.search_shortcut_short_label))
                .setLongLabel(appContext.getString(R.string.search_shortcut_long_label))
                .setIcon(Icon.createWithResource(appContext, R.drawable.ic_search_black))
                .setIntent(GroupHomeActivity.getStartIntent(appContext, NavigationScreen.SEARCH))
                .build()

        shortcutManager.addDynamicShortcuts(listOf(shortcut))
    }

我知道快捷方式在 Instant App 中没有任何意义,有没有比在创建 IA 时注释所有与快捷方式相关的代码更好的解决方案?

I understand that a shortcut does not make any sense in an Instant App, is there a better solution than having all the code related to shortcuts commented when creating an IA?

所以,是的,出于安全目的,Instant Apps 受到 运行 某些 API 的限制。曾经有一个 FAQ 页面指出这一点,但我找不到了。

但无论如何,您不必将其注释掉。您可以使用:

/instantapps/PackageManagerCompat.html#isInstantApp()