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:
- Crea un recurso
shortcuts.xmlsiguiendo las instrucciones que se indican en Cómo crear accesos directos estáticos. 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
intentanidados dentro decapability.Asignaciones de parámetros: Cada
intentpuede contener parámetros que se pasarán como datosextradel 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:targetPackageestablece el paquete de la aplicación de destino para este intent. - El campo
android:targetClassespecifica la actividad de destino:com.example.sampleApp.ExerciseActivity. - El intent
parameterdeclara la compatibilidad con un parámetro de BIIexercise.namey cómo pasar el valor del parámetro (recopilado del usuario) como datos adicionales en elintent.
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.