Configurer un hôte d'AppCard

Utilisez AppCardHost pour communiquer avec les applications qui affichent des fiches d'application.

Autorisations

Toute application qui utilise un AppCardHost doit disposer des autorisations suivantes :

  • android.permission.INTERACT_ACROSS_USERS_FULL
  • android.permission.QUERY_ALL_PACKAGES
  • (uniquement au niveau d'API 34 ou version ultérieure) android.car.permission.BIND_APP_CARD_PROVIDER

Initialiser

Pour initialiser l'hôte, fournissez les éléments suivants :

  • Contexte
  • updateRate Fréquence de mise à jour de la fiche d'application en millisecondes.
  • fastUpdateRate Fréquence de mise à jour en millisecondes pour les composants tagués avec EnforceFastUpdateRate
  • responseExecutor Fil de discussion sur lequel vous souhaitez recevoir des réponses des applications AppCard.

Conception

Vous pouvez interagir avec un AppCardHost de deux manières :

OU,

AppCardListener

Le composant AppCardListener s'enregistre auprès d'un AppCardHost pour recevoir des informations de communication provenant des applications AppCardHost et AppCard. Les fonctions d'interface d'un AppCardListener sont détaillées ici.

fun onAppCardReceived(AppCardContainer)

Cette fonction est déclenchée lorsqu'une fiche d'application a été reçue à partir d'une application. Elle est envoyée en tant que AppCardContainer, qui fournit une fiche d'application et un appIdentifier pour identifier l'application qui a envoyé la fiche d'application.

fun onComponentReceived(AppCardComponentContainer)

Cette fonction se déclenche lorsqu'un composant AppCard est reçu à partir d'une application. Il est envoyé en tant que AppCardComponentContainer, qui fournit un composant AppCards, Identifier pour identifier l'application qui a envoyé l'AppCard, et un ID de chaîne pour pointer vers l'AppCard à laquelle le composant est associé.

fun onProviderRemoved(String, String?)

Cette fonction est déclenchée lorsqu'un fournisseur de cartes d'application a été supprimé ou désactivé. Utilisez cette méthode pour nettoyer toute fiche d'application active associée au nom de package et à l'autorité du fournisseur donnés.

Si l'autorité est {@code null}, un package entier a été supprimé.

fun onProviderAdded(String, String?)

Cette fonction se déclenche lorsqu'un fournisseur de cartes d'application a été ajouté ou activé.

Exemple d'utilisation Utilisez cette fonction comme déclencheur pour actualiser toutes les cartes d'application disponibles dans un sélecteur de cartes d'application. Si l'autorité est {@code null}, un package entier a été ajouté.

fun onPackageCommunicationError(appIdentifier, Throwable)

Cette fonction est déclenchée lorsque AppCardHost rencontre une erreur lors de la communication avec un fournisseur d'AppCard.

Exemple d'utilisation Utilisez cette méthode pour indiquer à l'utilisateur qu'une fiche d'application qu'il a sélectionnée a rencontré une erreur.

API

fun refreshCompatibleapp()

Cette méthode doit être appelée chaque fois que l'activité qui utilise l'hôte est reprise afin que l'hôte puisse actualiser sa liste d'applications compatibles avec les fiches d'application.

fun destroy()

Appelez cette méthode lorsqu'une activité qui utilise un hôte est détruite afin que l'hôte puisse nettoyer toutes les connexions et les membres internes.

fun registerListener(AppCardListener)

Permet d'enregistrer un AppCardListener.

fun unregisterListener(AppCardListener)

Permet de désenregistrer un AppCardListener.

fun getAllAppCards(AppCardContext)

Appelez cette méthode pour fournir à un AppCardListener enregistré toutes les AppCards fournies dans le système avec un AppCardContext donné qui fournit des conseils aux fournisseurs sur la façon de structurer leur AppCard.

fun requestAppCard(AppCardContext, appIdentifier, String)

Appelez cette méthode pour fournir à un AppCardListener enregistré une fiche d'application spécifique, en fonction d'une AppCardContext qui donne des indications aux fournisseurs sur la façon de structurer leur fiche d'application.

fun notifyAppCardRemoved(appIdentifier, String)

Avertir un fournisseur d'App Card que son App Card n'est plus active

fun notifyAppCardInteraction(appIdentifier, String, String, String)

Notifier un fournisseur d'AppCard que son AppCard a été utilisée. La seule interaction acceptée est un clic sur un bouton, indiqué par un AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK.

Nous vous recommandons de créer un bouton pour une fiche d'application avec un écouteur onClick qui appelle cette fonction avec appIdentifier, l'ID de la fiche d'application, l'ID du composant et l'ID d'interaction.

fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)

Envoyez une mise à jour AppCardContext pour une fiche d'application spécifique. Par exemple, lorsque vous passez du mode "Park" (Stationnement) au mode "Drive" (Conduite), utilisez cette méthode pour envoyer une mise à jour AppCardContext dans laquelle isInteractable est défini sur false pour chaque carte d'application active.

Questions fréquentes

  1. Où puis-je trouver des exemples d'implémentations ?

    • Exemple d'hôte Affiche toutes les fiches d'application disponibles dans le système, ainsi que les fonctionnalités de test.

    • DriverUI et le gestionnaire Pano Le gestionnaire Pano agit en tant que sélecteur, tandis que DriverUI agit en tant que présentateur.

  2. Combien d'AppCards chaque AppCardContentProvider peut-il prendre en charge ?

    Un AppCardContentProvider peut prendre en charge un nombre infini d'AppCards. Toutefois, veillez à équilibrer le nombre d'AppCards avec les performances dégradées et une expérience utilisateur positive.