应用程序操作:通过动态快捷方式在 Google Assistant 中显示小部件

2024-03-08

考虑到官方文档和代码实验室中显示的选项,我的问题相对简单,但我一直在努力使其工作。

我想通过动态快捷方式触发一个小部件在 Google Assistant 中显示。看起来非常简单,但是当实现这样的功能和动态快捷方式时:

<capability
    android:name="actions.intent.GET_RESERVATION">
    <app-widget
        android:identifier="GET_MY_RESERVATION"
        android:targetClass="com.myapp.widget.MyWidget">
        <parameter
            android:name="reservation.reservationFor.name"
            android:key="shortcutId"
            android:required="true"
            app:shortcutMatchRequired="true" />
        <extra android:name="hasTts" android:value="true"/>
    </app-widget>
    <intent
        android:identifier="GET_MY_RESERVATION_FALLBACK"
        android:action="android.intent.action.VIEW"
        android:targetClass="com.myapp.widget.MyWidget">
    </intent>
</capability>
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()
        )
        .setIntent(Intent(context, MyWidget::class.java).apply {
            action = Intent.ACTION_VIEW
        })
        .setRank(2)
        .build()
ShortcutManagerCompat.pushDynamicShortcut(context, shortcut)

为快捷方式定义的意图是触发的意图,而不是为功能定义的小部件。此外,上面的快捷方式定义正在使应用程序崩溃,因为它期望其意图是可以通过以下方式调用的东西startActivity()(而小部件则不是)。

如果我静态定义相同的快捷方式:

<shortcut
    android:shortcutId="shortcut_id"
    android:shortcutShortLabel="shortcut label">
    <capability-binding
        android:key="actions.intent.GET_RESERVATION">
        <parameter-binding
            android:key="reservation.reservationFor.name"
            android:value="@array/synonyms" />
    </capability-binding>
</shortcut>

我可以省略意图,触发此操作会将逻辑按预期委托给功能的小部件。不幸的是,我无法找到一种方法来创建没有意图的动态快捷方式。

我这里缺少什么吗?感谢帮助。


当您添加addCapabilityBinding致电ShortcutInfoCompat构建器,您告诉 Google Assistant 这安卓快捷方式可以列为谷歌助理快捷方式。触发推送快捷方式的代码后,您的快捷方式应该出现在两个位置:长按应用程序图标后,以及 Google Assistant 的设置中(您可以在 Google Assistant 上输入“我的快捷方式”以查看可用快捷方式列表)。我尝试在模拟器上添加快捷方式,但不幸的是我在 Google Assistant 上看不到它。更多信息在官方文档 https://developer.android.com/guide/app-actions/dynamic-shortcuts#test_dynamic_shortcuts_with_assistant.

不过,这似乎并不像您想要实现的目标:从 Android 快捷方式触发小部件。这Intent您必须在此处定义的必须是 Android 意图。在大多数情况下,我们声明 Android 意图Activity从主机应用程序but如果您有信息,您可以深入链接到其他应用程序。事实证明,我已经制作了一些从我的 Android 应用程序深层链接到 Google Assistant 的应用程序。你可以尝试这样的事情:

.setIntent(Intent(Intent.ACTION_VIEW, Uri.parse("https://assistant.google.com/services/invoke/uid/YOUR_UDID?intent=actions.intent.GET_TAXI_RESERVATION")))

Where YOUR_UDID是应用程序操作插件上列出的一个。我想一旦你的应用程序投入生产,UDID 就会不同。我可以按照此说明进行操作:)希望这会有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应用程序操作:通过动态快捷方式在 Google Assistant 中显示小部件 的相关文章

  • 多个对象以某种方式相互干扰[原始版本]

    我有一个神经网络 NN 当应用于单个数据集时 它可以完美地工作 但是 如果我想在一组数据上运行神经网络 然后创建一个新的神经网络实例以在不同的数据集 甚至再次同一组数据 上运行 那么新实例将产生完全错误的预测 例如 对 XOR 模式进行训练
  • 调试VS 2005提示“操作不支持”

    我一直在调试 VS 2005 并将 启动外部程序 设置为 C Program Files Microsoft Visual Studio 10 0 Common7 IDE devenv exe 但按 F5 后出现此错误 尝试运行项目时出错
  • 如何让JComboBox中的内容居中显示?

    目前我有这个JComboBox 我怎样才能将其中的内容居中 String strs new String 15158133110 15158133124 15158133458 JComboBox com new JComboBox str
  • 使用ssl和socket的python客户端身份验证

    我有一个 python 服务器 需要客户端使用证书进行身份验证 我如何制作一个客户端脚本 使用客户端证书由 python 中的服务器使用 ssl 和套接字模块进行身份验证 有没有仅使用套接字和 ssl 而不扭曲的示例 from OpenSS
  • Android Jasper 报告

    Jasper Reporting 可以集成到 Android 应用程序中吗 我正在尝试从 jrxml 文件生成 PDF CSV 文本和 XLS 报告 但是 我没有看到 Android SDK 支持 net sf jasperreports
  • 查找总和为给定数字的值组合的函数

    这个帖子查找提供的 Sum 值的组合 https stackoverflow com a 20194023 1561176呈现函数subsets with sum 它在数组中查找总和等于给定值的值的组合 但由于这个帖子已经有6年多了 我发这
  • Bootstrap 3 / 显示模式不适用于 javascript 方式

    我用Modal http getbootstrap com javascript modalsBootstrap 3 0 的功能 我有这个代码 a href myNestedContent Open the modal containing
  • 如何为不同操作系统/Python 版本编译 Python C/C++ 扩展?

    我注意到一些成熟的Python库已经为大多数架构 Win32 Win amd64 MacOS 和Python版本提供了预编译版本 针对不同环境交叉编译扩展的标准方法是什么 葡萄酒 虚拟机 众包 我们使用虚拟机和Hudson http hud
  • 在 VS2008 的 XAML 编辑器中禁用 Intellisense?

    有没有办法在 Visual Studio 2008 的 XAML 编辑器中禁用 Intellisense 打字时通常会消耗很大的性能 有时我会等待十秒或更长时间 直到列表自动弹出 似乎在 选项 gt 文本编辑器 gt XAML 中 Inte
  • Swing:创建可拖动组件...?

    我在网上搜索了可拖动 Swing 组件的示例 但我发现示例不完整或不起作用 我需要的是一个摇摆组件那可以是dragged通过鼠标 在另一个组件内 被拖拽的时候 应该已经 改变它的位置 而不仅仅是 跳 到目的地 我很欣赏无需非标准 API 即
  • RichFaces 应用程序,我应该使用 rich:dataTable 还是 jQGrid,优缺点吗?

    继从here https stackoverflow com questions 3899649 ok to wrap jsf components generated html with own divs using jquery aft
  • 在 javascript 中使用 xPath 解析具有默认命名空间的 XML

    我需要创建一个 XML xPath 解析器 所有解析都必须在客户端进行 使用 JavaScript 我创建了一个 javascript 来执行此操作 在默认名称空间发挥作用之前 一切看起来都正常 我根本无法查询具有默认命名空间的 XML 我
  • ggplot2 的 fortify 函数出错

    我在 ggplot2 中使用 fortify 方法时收到此错误 Error in function classes fdef mtable unable to find an inherited method for function pr
  • 在门户中查看 Azure WebJob 计划?

    我创建了一个简单的 Azure WebJob 并通过 Visual Studio 集成制定了每天运行一次的计划 我已经部署了 WebJob 并看到它列在我在 Azure 上的应用程序中 schema http schemastore org
  • Apache Beam Pipeline 写表后查询表

    我有一个 Apache Beam Dataflow 管道 它将结果写入 BigQuery 表 然后我想查询该表以获取管道的单独部分 但是 我似乎无法弄清楚如何正确设置此管道依赖性 我编写的新表 然后想要查询 与一个单独的表连接以进行某些过滤
  • 在 for 循环比较中使用集合大小

    Java 中 Collections 的 size 方法是否有编译器优化 考虑以下代码 for int i 0 i
  • 给定文档,选择相关片段

    当我在这里提出问题时 自动搜索返回的问题的工具提示给出了问题的前一点 但其中相当一部分没有给出任何比理解问题更有用的文本 标题 有谁知道如何制作一个过滤器来删除问题中无用的部分 我的第一个想法是修剪仅包含某个列表中的单词的任何前导句子 例如
  • CLion - 命令行程序参数

    当我分配给 运行 调试配置 程序参数 之类的 aaa bbb 然后打印它时 任何人都可以告诉我 JetBrains CLion 有什么问题吗 printf s n argv 1 我刚刚得到 aaa 而它必须是 aaa bbb 因为它们用双引
  • 无法将 /root/.rnd 加载到 RNG 中

    我想使用 Windows Open SSL 生成服务器证书 当我运行此命令行时 出现此错误 我应该怎么办 Command openssl req new x509 days 3650 key ca key out ca crt Error
  • Android Espresso - 如果未选中,请单击复选框

    I have onView withId R id check box perform click 但我只想在尚未选中该复选框时执行此操作 我怎样才能在浓缩咖啡中做到这一点 我还想根据其之前的状态来切换复选框 开关 起初 我尝试用此方法打开

随机推荐