Cómo agregar objetos capability a accesos directos

Las funciones de shortcuts.xml te permiten declarar los tipos de acciones que los usuarios pueden realizar para iniciar tu app y ejecutar directamente una tarea específica. Una capacidad consta del nombre de la acción y un intent que se orienta al destino de tu app que resuelve la intención del usuario.

Cómo definir funciones en shortcuts.xml

Define elementos capability en un archivo de recursos shortcuts.xml en tu proyecto de desarrollo de apps para Android. Para definir un elemento capability, haz lo siguiente:

  1. Crea un recurso shortcuts.xml siguiendo las instrucciones que se indican en Cómo crear accesos directos estáticos.
  2. Incluye la siguiente información obligatoria en tu capacidad:

    • Nombre de la capability: Es la acción que deseas que admita tu app. Consulta la documentación del componente para conocer la función que requiere definiciones de capacidades.

    • Destino de la app: Es el destino de tu app que inicia la acción para completar la solicitud del usuario. Define los destinos de la app con elementos intent anidados dentro de capability.

    • Asignaciones de parámetros: Cada intent puede contener parámetros que se pasarán como datos extra del intent.

En el siguiente ejemplo, se muestra una definición de capability en shortcuts.xml para actions.intent.START_EXERCISE, un BII que permite que los usuarios usen comandos por voz con Asistente para iniciar un entrenamiento en una app de fitness:

<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>

En el ejemplo anterior, el atributo <capability> android:name hace referencia al BII START_EXERCISE. Si un usuario invoca este BII y le pregunta al Asistente: "Hey Google, inicia una caminata en AppDeEjemplo", Asistente completará la solicitud del usuario con la información proporcionada en el elemento intent anidado. El intent de este ejemplo define los siguientes detalles:

  • El android:targetPackage establece el paquete de la aplicación de destino para este intent.
  • El campo android:targetClass especifica la actividad de destino: com.example.sampleApp.ExerciseActivity.
  • El intent parameter declara la compatibilidad con un parámetro de BII exercise.name y cómo pasar el valor del parámetro (recopilado del usuario) como datos adicionales en el intent.

Cómo asociar accesos directos con una función

Una vez que definas una capacidad, podrás extender su funcionalidad asociándole atajos estáticos o dinámicos. La forma en que se vinculan los accesos directos a un capability depende de la función que se implemente y de las palabras reales que se incluyan en la solicitud de un usuario. Por ejemplo, cuando un usuario inicia una actividad de correr en tu app de monitoreo de estado físico, le pregunta al Asistente: "Hey Google, inicia una actividad de correr en App de Ejemplo". Asistente puede usar un acceso directo para iniciar una instancia de un capability que defina una entidad de ejercicio válida de "correr" para el parámetro exercise.name.