为快捷方式添加功能

借助 shortcuts.xml 中的功能,您可以声明用户启动应用时可以执行的操作类型,并直接执行特定任务。功能由操作名称和 intent 组成,后者定位到应用中可解析用户意图的目的地。

在 shortcuts.xml 中定义能力

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

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

    • Capability 名称:您希望应用支持的操作。请参阅需要功能定义的特性的组件文档。

    • 应用内目标页面:操作启动后会转到应用中的目标页面,以满足用户请求。使用嵌套在 capability 中的 intent 元素定义应用目的地。

    • 参数映射:每个 intent 都可能包含要作为 intent 的 extra 数据传递的参数。

以下示例演示了 shortcuts.xml 中针对 actions.intent.START_EXERCISE 的 capability 定义,该 BII 可让用户通过向 Google 助理发出语音指令,在健身应用中开始锻炼:

<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 助理发出指令“Ok Google,启动 ExampleApp,开始跑步”来调用此 BII,Google 助理会使用嵌套 intent 元素中提供的信息执行用户请求。此示例中的 intent 定义了以下详细信息:

  • android:targetPackage 为此 intent 设置目标应用软件包。
  • android:targetClass 字段指定目的地 activity:com.example.sampleApp.ExerciseActivity。
  • intent parameter 声明支持 BII 参数 exercise.name,并声明如何将从用户处收集的参数值作为 intent 中的额外数据进行传递。

将快捷方式与能力相关联

定义 capability 后,您可以通过将静态或动态快捷方式与 capability 相关联来扩展其功能。快捷方式与 capability 的关联方式取决于要实现的功能以及用户请求中包含的实际字词。例如,当用户通过向 Google 助理发出指令“Hey Google, start a run in ExampleApp”在您的健身跟踪应用中开始跑步时,Google 助理可以使用快捷方式启动 capability 的实例,该实例为 exercise.name 参数定义了有效的“跑步”锻炼实体。