You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

动态快捷方式触发Google Assistant显示Widget的App Actions问题

动态快捷方式触发Google Assistant显示Widget的问题解决

问题核心

动态快捷方式强制要求设置Intent,但Widget无法通过startActivity()启动,直接配置Widget类会导致崩溃;且触发时会优先执行快捷方式的Intent,而非Capability中配置的Widget展示逻辑。静态快捷方式可省略Intent正常触发Widget,但动态快捷方式找不到无Intent的创建方法。

解决方案

给动态快捷方式设置占位Intent(指向一个无实际逻辑的透明Activity),而非直接指向Widget类,以此满足快捷方式的Intent要求,同时让Google Assistant优先匹配Capability中的Widget配置。

1. 修改动态快捷方式代码

将原来指向Widget的Intent替换为指向占位Activity的Intent:

val shortcut = ShortcutInfoCompat.Builder(context, "shortcut_id")
        .setShortLabel("shortcut label")
        .setExcludedFromSurfaces(ShortcutInfoCompat.SURFACE_LAUNCHER)
        .setLongLived(false)
        .addCapabilityBinding(
            "actions.intent.GET_RESERVATION",
            "reservation.reservationFor.name",
            context.resources.getStringArray(R.array.synonyms).toList()
        )
        // 使用占位Activity的Intent
        .setIntent(Intent(context, PlaceholderActivity::class.java).apply {
            action = Intent.ACTION_VIEW
        })
        .setRank(2)
        .build()
ShortcutManagerCompat.pushDynamicShortcut(context, shortcut)

2. 添加占位Activity

在AndroidManifest.xml中注册一个透明、无逻辑的Activity,仅作为Intent的合法目标:

<activity
    android:name=".PlaceholderActivity"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:exported="false" />

PlaceholderActivity的代码无需任何逻辑,空实现即可:

class PlaceholderActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        finish() // 可选:立即关闭,避免显示空白界面
    }
}

原理说明

动态快捷方式的Intent仅为满足系统语法要求,当Google Assistant匹配到快捷方式的Capability绑定后,会优先执行Capability中配置的app-widget逻辑,不会触发占位Activity的启动(即使启动也会立即关闭,无感知)。

关键注意点

  • 确保Capability中的app:shortcutMatchRequired="true"配置正确,让Assistant严格匹配快捷方式的参数绑定,确保触发Widget而非 fallback intent。
  • 动态快捷方式的addCapabilityBinding参数必须与Capability中定义的参数名称完全一致(示例中为reservation.reservationFor.name)。

内容的提问来源于stack exchange,提问作者AsafK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:18:23