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

如何通过自定义Intent在Google Assistant中显示Widget?

解决方案:Google Assistant中通过自定义Intent显示Widget的问题

核心结论

不需要依赖BII(Built-in Intents),通过自定义Intent+Widget fulfillment的方式完全可以实现你的需求,但你的配置存在几个关键问题,导致无法正常工作,以下是针对性修复方案:


1. 静态快捷方式不显示的问题

静态快捷方式需要满足两个条件才会被启动器和Assistant识别:

  • 必须添加android.shortcut.category.DEFAULT分类标签
  • 需在Manifest中正确引用快捷方式配置文件

修正后的静态快捷方式代码

<shortcut
    android:shortcutId="SOMETHING_SHORTCUT"
    android:shortcutShortLabel="@string/ShortcutShortLabel"
    android:shortcutLongLabel="@string/ShortcutLongLabel">
    <capability-binding android:key="custom.actions.intent.SOMETHING" />
    <!-- 必须添加这个分类,否则启动器和Assistant不会识别 -->
    <categories android:name="android.shortcut.category.DEFAULT"/>
</shortcut>

补充Manifest配置

在<application>或目标<activity>标签下添加快捷方式引用:

<meta-data 
    android:name="android.app.shortcuts" 
    android:resource="@xml/shortcuts"/>

2. 动态快捷方式仅自身账号可见的问题

直接通过深度链接绑定测试账号的方式不具备通用性,正确做法是使用ShortcutManagerCompat创建动态快捷方式,并确保app已发布到测试渠道或Google Play(Assistant需要索引app的快捷方式信息)。

动态快捷方式创建示例(Kotlin)

val shortcut = ShortcutInfoCompat.Builder(context, "SOMETHING_SHORTCUT")
    .setShortLabel(context.getString(R.string.ShortcutShortLabel))
    .setLongLabel(context.getString(R.string.ShortcutLongLabel))
    .setCategories(setOf(ShortcutInfoCompat.SHORTCUT_CATEGORY_DEFAULT))
    .setCapabilityBinding("custom.actions.intent.SOMETHING")
    .build()
ShortcutManagerCompat.pushDynamicShortcut(context, shortcut)

3. Logcat报错Unsupported client op: ui.SHOW_APP_WIDGET的问题

这个报错说明你的Widget配置不符合Assistant的规范,需检查以下几点:

  • Widget类必须继承AppWidgetProvider:确认com.example.Widget是AppWidgetProvider的子类,而非普通Activity或View
  • 移除无效的自定义Extra:Assistant的Widget fulfillment不支持hasTts这类自定义参数,直接删除该配置
  • Widget布局需符合Assistant规范:使用基础尺寸(建议minWidth="180dp"、minHeight="120dp"),仅使用TextView、ImageView、Button等基础控件,避免ListView、RecyclerView等复杂交互组件

修正后的Capability代码

<capability android:name="custom.actions.intent.SOMETHING">
    <app-widget
        android:identifier="SOMETHING_WIDGET"
        android:targetClass="com.example.Widget"
        android:targetPackage="com.example"/>

    <intent
        android:identifier="SOMETHING_FALLBACK"
        android:targetClass="com.example.FallbackActivity"
        android:targetPackage="com.example" />
</capability>

4. 额外注意事项

  • 确保Manifest中添加Assistant集成配置:
    <meta-data 
        android:name="com.google.android.actions" 
        android:resource="@xml/actions"/>
    
    其中actions.xml是你定义capability的配置文件
  • 测试时可通过语音触发:比如"Hey Google, 打开[你的快捷方式名称]",Assistant需要触发一次后才会将快捷方式加入索引列表
  • 依赖androidx.core:core-google-shortcuts:1.1.0是正确的,需确保项目完全使用AndroidX,无support库冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:20:20