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_FULLandroid.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
updateRateFréquence de mise à jour de la fiche d'application en millisecondes.fastUpdateRateFréquence de mise à jour en millisecondes pour les composants tagués avecEnforceFastUpdateRateresponseExecutorFil de discussion sur lequel vous souhaitez recevoir des réponses des applications AppCard.
Conception
Vous pouvez interagir avec un AppCardHost de deux manières :
- Inscrivez-vous en tant que
AppCardListener.
OU,
- Interagir avec les API
AppCardHost
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)AppCardContainer, qui fournit une fiche d'application et un appIdentifier pour identifier l'application qui a envoyé la fiche d'application.fun onComponentReceived(AppCardComponentContainer)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?)Si l'autorité est {@code null}, un package entier a été supprimé.
fun onProviderAdded(String, String?)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)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()fun destroy()fun registerListener(AppCardListener)AppCardListener.fun unregisterListener(AppCardListener)AppCardListener.fun getAllAppCards(AppCardContext)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)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)fun notifyAppCardInteraction(appIdentifier, String, String, String)AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK.
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)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
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.
Combien d'AppCards chaque
AppCardContentProviderpeut-il prendre en charge ?Un
AppCardContentProviderpeut 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.