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_FULL
android.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
updateRate
Frequenza di aggiornamento di Scheda app in millisecondi.fastUpdateRate
Frequenza di aggiornamento in millisecondi per i componenti taggati conEnforceFastUpdateRate
responseExecutor
Un 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
AppCardContentProvider
può 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.