Envoyer des raccourcis dynamiques à l'Assistant

Les raccourcis Android fournissent aux utilisateurs des méthodes rapides 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 au moment opportun, leur permettant ainsi de découvrir et de revoir facilement votre fonctionnalité à commande vocale.

Par exemple, vous pouvez envoyer un raccourci pour chaque note créée par un utilisateur dans votre application de prise de notes. Pour rendre des liens dynamiques éligibles à l'affichage sur les surfaces Google, comme l'Assistant, ajoutez 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 classe ShortcutManagerCompat, qui est un wrapper Jetpack pour l'API ShortcutManager.

Lorsque vous utilisez la bibliothèque d'intégration des raccourcis Google dans votre application, les raccourcis dynamiques 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 à l'Assistant à l'aide de la méthode pushDynamicShortcut() de la bibliothèque ShortcutManagerCompat.

Configurer votre projet de développement

Pour ajouter une fonctionnalité de raccourcis dynamiques à votre application, vous devez utiliser la 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 la classe ShortcutManagerCompat, que vous utilisez pour transmettre des raccourcis dynamiques à 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 autorisez l'Assistant à intégrer les raccourcis dynamiques que vous transmettez à l'aide de la classe ShortcutManagerCompat.

Transférer des raccourcis dynamiques

Pour transférer des raccourcis dynamiques pouvant s'afficher dans l'Assistant, vous devez d'abord créer le raccourci à l'aide de la classe ShortcutInfoCompat.Builder().

Vous transmettez ensuite le raccourci à l'aide de la méthode ShortcutManagerCompat.pushDynamicShortcut(). Les raccourcis sont envoyés chaque fois qu'un utilisateur effectue une action pertinente dans votre application. L'exemple de code 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 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 association de paramètre d'intent intégré spécifique. 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 accepte un raccourci dynamique de votre application, le raccourci peut s'afficher en tant que suggestion de raccourci vocal dans l'application Android Assistant. L'application Assistant suggère les raccourcis les plus récents transmis par votre application.

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

  1. Créez un aperçu des actions dans votre application et préparez votre appareil de test ou votre émulateur pour les actions de test en respectant les mêmes exigences de configuration que 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 raccourci dynamique s'affiche dans la liste de votre application.