Envoyer des raccourcis dynamiques à l'Assistant

Les raccourcis Android offrent aux utilisateurs pour effectuer une action ou accéder au contenu d'une application. L'Assistant peut suggérer de manière proactive vos raccourcis dynamiques Android aux utilisateurs de aux moments pertinents, ce qui permet aux utilisateurs de découvrir et de revoir facilement des fonctionnalités à commande vocale.

Par exemple, vous pouvez envoyer un raccourci pour chaque note créée par un utilisateur votre application de prise de notes. Vous créez les liens dynamiques pouvant s'afficher sur les surfaces Google, comme l'Assistant, en ajoutant la bibliothèque Jetpack d'intégration des raccourcis Google à votre projet. Cette bibliothèque permet à l'Assistant d'utiliser les raccourcis dynamiques que vous transmettez à l'aide de la La classe ShortcutManagerCompat, qui est un wrapper Jetpack pour API ShortcutManager.

Lorsque vous utilisez la bibliothèque d'intégration des raccourcis Google dans votre application, les éléments dynamiques les raccourcis que vous transmettez à Google sont visibles par les utilisateurs en tant que suggestions de raccourcis vocaux dans l'application Assistant. Vous pouvez envoyer un nombre illimité de raccourcis dynamiques vers Assistant utilisant la méthode pushDynamicShortcut() de la ShortcutManagerCompat.

Configurer votre projet de développement

Pour ajouter la fonctionnalité de raccourcis dynamiques à votre application, vous devez Bibliothèque d'intégration des raccourcis Google, qui est une bibliothèque Android Jetpack. Cette section explique comment configurer votre projet de développement d'applications pour inclure cette bibliothèque.

Pour ajouter cette bibliothèque Jetpack et configurer votre projet, procédez comme suit :

  1. Mettez à jour votre fichier gradle.properties pour gérer les bibliothèques Jetpack :

    gradle.properties

    android.useAndroidX=true
    # Automatically convert third-party libraries to use AndroidX
    android.enableJetifier=true
    
  2. Ajoutez les dépendances de la bibliothèque Jetpack à votre build.gradle :

    app/build.gradle

    dependencies {
     implementation "androidx.core:core:1.6.0"
     implementation "androidx.core:core-google-shortcuts:1.0.1"
     ...
    }
    

    Dans l'exemple de code précédent, vous répertoriez deux bibliothèques Jetpack en tant que dépendances. La bibliothèque androidx.core:core:1.6.0 contient ShortcutManagerCompat, qui permet d'envoyer des raccourcis dynamiques vers Google

    androidx.core:core-google-shortcuts:1.0.1 est la bibliothèque d'intégration de raccourcis Google. Cette bibliothèque ne contient aucune API destinée aux développeurs. En l'ajoutant en tant que dépendance, vous permettez à l'Assistant de prendre en compte les raccourcis dynamiques que vous transmettez à l'aide de la classe ShortcutManagerCompat.

Transférer des raccourcis dynamiques

Pour envoyer des raccourcis dynamiques qui peuvent s'afficher dans l'Assistant : créez d'abord le raccourci à l'aide de ShortcutInfoCompat.Builder(). .

Vous transmettez ensuite le raccourci à l'aide de la commande ShortcutManagerCompat.pushDynamicShortcut(). Transfert des raccourcis activé Chaque fois qu'un utilisateur effectue une action pertinente dans votre application. L'exemple suivant envoie un raccourci chaque fois qu'un utilisateur passe une commande dans une application de livraison de repas:

Exemple d'appli de livraison

Kotlin

// Define the dynamic shortcut for a menu item
var intent = Intent(context, DisplayOrderActivity::class.java)
intent.action = Intent.ACTION_VIEW
var shortcutInfo = ShortcutInfoCompat.Builder(context, id)
    .setShortLabel("Cappuccino")
    .setLongLabel("Order another cappuccino")
    .addCapabilityBinding(
        "actions.intent.ORDER_MENU_ITEM", "menuItem.name", Arrays.asList("cappuccino")
    )
    .setIntent(intent) // Push the shortcut
    .build()

// Push the shortcut
ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo)

Java

// Define the dynamic shortcut for a menu item
Intent intent = new Intent(context, DisplayOrderActivity.class);
intent.setAction(Intent.ACTION_VIEW);

ShortcutInfoCompat.Builder shortcutInfo = new ShortcutInfoCompat.Builder(context, id)
    .setShortLabel("Cappuccino")
    .setLongLabel("Order another cappuccino")
    .addCapabilityBinding(
      "actions.intent.ORDER_MENU_ITEM", "menuItem.name", Arrays.asList("cappuccino"))
    .setIntent(intent)
    .build();

// Push the shortcut
ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);

L'élément id référencé dans la méthode ShortcutInfoCompat.Builder de l'exemple de code précédent définit l'shortcutId de l'objet de raccourci obtenu. Ce/Cet/Cette id doit être un littéral de chaîne unique. Pour en savoir plus, consultez la documentation sur les raccourcis Android.

Dans l'exemple précédent, la méthode addCapabilityBinding lie le raccourci dynamique à un élément capability du même élément android:name défini dans shortcuts.xml. Cette méthode vous permet d'associer le raccourci un paramètre sémantique d'intent intégré.

Les raccourcis dynamiques sont parfois transmis sans paramètre d'intent intégré particulier l'association. Lorsqu'il est appelé par l'utilisateur, l'Assistant déclenche l'action intent définie dans le raccourci pour exécuter l'action. L'exemple suivant illustre un raccourci dynamique sans association de paramètres :

Kotlin

var intent: Intent = Intent(context, DisplayOrderActivity::class.java)
intent.setPackage(this, "com.sample.app")
intent.setAction(Intent.ACTION_VIEW)

var shortcutInfo: ShortcutInfoCompat = ShortcutInfoCompat.Builder(context, id)
    .setShortLabel("Order coffee")
    .setLongLabel("Order a cup of coffee")
    .addCapabilityBinding("actions.intent.ORDER_MENU_ITEM")
    .setIntent(intent)
    .build()

ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);

Java

Intent intent = new Intent(context, DisplayOrderActivity.class);
intent.setPackage(this, "com.sample.app");
intent.setAction(Intent.ACTION_VIEW);

ShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(context, id)
  .setShortLabel("Order coffee")
  .setLongLabel("Order a cup of coffee")
  .addCapabilityBinding("actions.intent.ORDER_MENU_ITEM")
  .setIntent(intent)
  .build();

ShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);

Tester les raccourcis dynamiques avec l'Assistant

Lorsque l'Assistant Google parvient à intégrer un raccourci dynamique à partir de votre application, le raccourci peut s'afficher en tant que suggestion de raccourci vocal dans Application Android Assistant. L'appli Assistant suggère les raccourcis les plus récents transmises par votre application.

Pour tester vos raccourcis dynamiques avec l'Assistant, procédez comme suit :

  1. Créez un aperçu de vos actions dans les applications et préparez votre appareil de test ou pour tester les actions en suivant la même procédure comme pour le plug-in Assistant Google.
  2. Ouvrez votre application et définissez un raccourci dynamique à transférer. Effectuez ensuite une action. Par exemple, si vous utilisez un raccourci chaque fois qu'une note est créée dans votre application de prise de notes, créez une note.
  3. Ouvrez les Raccourcis dans l'application Paramètres de l'Assistant de votre appareil. Votre le raccourci dynamique s'affiche dans la liste de votre application.