向快捷方式添加功能

shortcuts.xml中的功能让您可以声明用户可以采取哪些类型的操作来启动您的应用并直接执行特定任务。

例如,Google 助理应用操作使用功能让开发者将应用内功能扩展到内置意图 (BII),让用户可以使用语音命令激活和控制这些功能。功能包括操作的名称和一个intent,该intent指向解决用户意图的应用中的目标位置。

在shortcuts.xml中定义功能

您在Android应用开发项目中的shortcuts.xml资源文件中定义capability元素。要定义capability元素,请执行以下操作

  1. 按照创建静态快捷方式中的说明创建shortcuts.xml资源。
  2. 在您的功能中包含以下必需信息

    • 功能名称:您希望您的应用支持的操作。请参阅需要功能定义的功能的组件文档。应用操作语音启用命令使用BII Action ID作为功能名称,您可以在BII参考中找到。例如,GET_THING BII将其Action ID列为actions.intent.GET_THING

    • 应用目标:操作启动以满足用户请求的应用中的目标位置。使用嵌套在capability内的intent元素定义应用目标。

    • 参数映射:每个intent可能包含作为extra数据传递给intent的参数。例如,每个应用操作BII都包含表示用户在触发BII的查询中经常提供的信息的字段。

以下示例演示了actions.intent.START_EXERCISE(一个允许用户使用语音命令与助理一起在健身应用中开始锻炼的BII)在shortcuts.xml中的功能定义。

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
  <capability android:name="actions.intent.START_EXERCISE">
    <intent
      android:action="android.intent.action.VIEW"
      android:targetPackage="com.example.sampleApp"
      android:targetClass="com.example.sampleApp.ExerciseActivity">
      <parameter
        android:name="exercise.name"
        android:key="exerciseType"/>
    </intent>
  </capability>
</shortcuts>

在前面的示例中,<capability> android:name属性指的是START_EXERCISE BII。如果用户通过询问助理“嘿,Google,在ExampleApp中开始跑步”来调用此BII,助理将使用嵌套的intent元素中提供的信息来满足用户请求。intent在此示例中定义了以下详细信息:

  • android:targetPackage设置此意图的目标应用程序包。
  • android:targetClass字段指定目标活动:com.example.sampleApp.ExerciseActivity
  • 意图parameter声明对BII参数exercise.name的支持以及如何将从用户收集的参数值作为intent中的额外数据传递。

将快捷方式与功能关联

定义功能后,您可以通过将静态或动态快捷方式与其关联来扩展其功能。快捷方式如何链接到capability取决于正在实现的功能以及用户请求中包含的实际词语。例如,当用户通过询问助理“嘿,Google,在ExampleApp中开始跑步”来开始在您的健身追踪应用中跑步时,助理可以使用快捷方式启动定义“跑步”的有效锻炼实体的capability的实例,用于exercise.name参数。

有关将快捷方式与应用操作关联的更多信息,请参阅应用操作概述