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 avecEnforceFastUpdateRate
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 :
- 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
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.