Usa AppCardHost per comunicare con le app che mostrano le schede di app.
Autorizzazioni
Qualsiasi app che utilizza un AppCardHost deve disporre delle seguenti autorizzazioni:
android.permission.INTERACT_ACROSS_USERS_FULLandroid.permission.QUERY_ALL_PACKAGES- (Solo a partire dal livello API 34)
android.car.permission.BIND_APP_CARD_PROVIDER
Inizializza
Per inizializzare l'host, fornisci:
- Contesto
updateRateFrequenza di aggiornamento di Scheda app in millisecondi.fastUpdateRateFrequenza di aggiornamento in millisecondi per i componenti taggati conEnforceFastUpdateRateresponseExecutorUn thread su cui vuoi ricevere risposte dalle app AppCard.
Design
Puoi interagire con un AppCardHost in due modi:
- Registrati come
AppCardListener
OPPURE,
- Interagire con le API
AppCardHost
AppCardListener
Il componente AppCardListener si registra con un AppCardHost
per ricevere aggiornamenti sulle comunicazioni dalle app AppCardHost e AppCard.
Le funzioni di interfaccia di un AppCardListener sono descritte qui.
fun onAppCardReceived(AppCardContainer)AppCardContainer che fornisce un'app card e un appIdentifier per identificare l'app che ha inviato l'app cardfun onComponentReceived(AppCardComponentContainer)AppCardComponentContainer, che fornisce un componente AppCards, Identifier per identificare l'app che ha inviato l'AppCard e un ID stringa che rimanda all'AppCard a cui il componente è correlato.fun onProviderRemoved(String, String?)Se l'autorità è {@code null}, significa che è stato rimosso un intero pacchetto.
fun onProviderAdded(String, String?)Esempi di utilizzo. Utilizza questa funzione come attivatore per aggiornare tutte le schede di app disponibili in un selettore di schede di app. Se l'autorità è {@code null}, è stato aggiunto un intero
pacchetto.
fun onPackageCommunicationError(appIdentifier, Throwable)AppCardHost rileva un errore durante la comunicazione con un fornitore di AppCard.
Esempi di utilizzo. Utilizza questo metodo per mostrare all'utente che è stato rilevato un errore in un'AppCard selezionata.
API
fun refreshCompatibleapp()fun destroy()fun registerListener(AppCardListener)AppCardListener.fun unregisterListener(AppCardListener)AppCardListener.fun getAllAppCards(AppCardContext)AppCardListener registrato tutte le schede dell'app fornite nel sistema con un determinato AppCardContext che fornisce ai fornitori suggerimenti su come strutturare la loro scheda dell'app.fun requestAppCard(AppCardContext, appIdentifier, String)AppCardListener registrato un'AppCard specifica, dato un AppCardContext che fornisce ai fornitori suggerimenti su come strutturare la loro AppCard.fun notifyAppCardRemoved(appIdentifier, String)fun notifyAppCardInteraction(appIdentifier, String, String, String)AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK.
onClick che chiami questa funzione con appIdentifier, l'ID scheda dell'app, l'ID componente e l'ID interazione.fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)AppCardContext per una scheda dell'app specifica. Ad esempio, quando passi dalla modalità Parcheggia alla modalità Guida, utilizza questo metodo per inviare un aggiornamento AppCardContext in cui isInteractable è impostato su false per ogni scheda App attiva.Domande frequenti
Dove posso trovare implementazioni di esempio?
Host di esempio. Mostra tutte le AppCard disponibili nel sistema, insieme alle funzionalità di test.
DriverUI e Pano Manager. Pano Manager funge da selettore, mentre DriverUI funge da presentatore.
Quante AppCard può supportare ogni
AppCardContentProvider?Un
AppCardContentProviderpuò supportare un numero infinito di schede di app. Tuttavia, assicurati di bilanciare il numero di schede dell'app con un rendimento ridotto rispetto a un'esperienza utente positiva.