问题描述
所以我只是想知道为什么我的代码不起作用。我如何为 AppShorcutIntent 提供具有操作和数据之类的特定意图?
这是我目前的代码:
val appShortcutIntent = AppShortcutIntent.builder()
.setIntentName("actions.intent.OPEN_APP_FEATURE")
.setPackageName("com.app.name")
.setIntentParamName("feature")
.setIntentParamValue("")
.build()
shortcutsClient.lookupShortcut(appShortcutIntent)
.addOnSuccessListener { shortcutLookupResult ->
if (shortcutLookupResult.isShortcutPresent) {
shortcutsClient.createShortcutSettingsIntent().addOnSuccessListener { intent ->
requireActivity().startActivity(intent)
}
return@addOnSuccessListener
}
val signalShortcut = AppShortcutSuggestion.builder()
.setAppShortcutIntent(appShortcutIntent)
.setCommand("feature on")
.build()
shortcutsClient.createShortcutSuggestionIntent(signalShortcut).addOnSuccessListener { intent ->
requireActivity().startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
}
}
我尝试了很多不同的东西,但似乎没有一个想要按照我想要的方式工作。我知道这个问题没有任何具体的参数值,但无论我设置什么参数值,当我使用快捷方式时,它仍然没有被识别为一个独特的意图。
解决方法
应用内促销库 API 不处理 Android 意图。它处理助手的 built-in intents,这是完全不同的东西(即使它们都被称为“意图”)。在您复制的示例中,它指的是名为 OPEN_APP_FEATURE 的 BII。
通过使用此 API,您是在告诉 Google 助理如何创建快捷方式,以使用已配置为处理的 BII 启动应用程序。这个 BII 很重要,因为它具有识别与之相关的自然语言查询的能力。 Android Intent 没有这种上下文。