向快捷方式添加功能

shortcuts.xml 中的功能(Capabilities)允许您声明用户启动您的应用并直接执行特定任务的方式。一个功能由操作名称和一个 intent 组成,该 intent 指向您应用中用于处理用户意图的目标。

在 shortcuts.xml 中定义功能

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

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

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

    • 应用目标 (App destination):用户请求启动的应用目标位置,以满足用户需求。使用嵌套在 capability 中的 intent 元素定义应用目标。

    • 参数映射 (Parameter mappings):每个 intent 可能包含需要作为 intent 的 extra 数据传递的参数。

以下示例演示了 actions.intent.START_EXERCISEshortcuts.xml 中的功能定义。这是一个内置意图 (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 助理说:“Hey Google, start a run in ExampleApp”(嘿 Google,在 ExampleApp 中开始跑步)来调用此 BII,Google 助理将使用嵌套 intent 元素中提供的信息来满足用户请求。此示例中的 intent 定义了以下详细信息:

  • android:targetPackage 设置此 intent 的目标应用程序包名。
  • android:targetClass 字段指定目标 Activity:com.example.sampleApp.ExerciseActivity
  • intent 的 parameter 声明了对 BII 参数 exercise.name 的支持,以及如何将从用户处收集到的参数值作为 intent 中的额外数据(extra data)进行传递。

将快捷方式与功能关联

定义功能后,您可以通过将静态或动态快捷方式与该功能关联来扩展其功能。快捷方式如何链接到 capability 取决于所实现的功能以及用户请求中包含的具体词汇。例如,当用户通过对 Google 助理说:“Hey Google, start a run in ExampleApp” 来启动健身应用中的跑步任务时,Google 助理可以使用快捷方式启动 capability 的实例,该功能为 exercise.name 参数定义了一个有效的“跑步”锻炼实体。