Configurare un host AppCard

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 con EnforceFastUpdateRate
  • responseExecutor Un thread su cui vuoi ricevere risposte dalle app AppCard.

Design

Puoi interagire con un AppCardHost in due modi:

OPPURE,

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)

Questa funzione viene attivata quando viene ricevuta un'app card da un'app. Viene inviata come AppCardContainer che fornisce un'app card e un appIdentifier per identificare l'app che ha inviato l'app card

fun onComponentReceived(AppCardComponentContainer)

Questa funzione viene attivata quando un componente AppCard viene ricevuto da un'app. Viene inviata come 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?)

Questa funzione viene attivata quando un fornitore di schede di app è stato rimosso o disattivato. Utilizza questo metodo per ripulire eventuali AppCard attive correlate al nome del pacchetto e all'autorità del provider specificati.

Se l'autorità è {@code null}, significa che è stato rimosso un intero pacchetto.

fun onProviderAdded(String, String?)

Questa funzione viene attivata quando un fornitore di schede di app è stato aggiunto o attivato.

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)

Questa funzione viene attivata quando 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()

Questo metodo deve essere chiamato ogni volta che l'attività che utilizza l'host viene ripresa in modo che l'host possa aggiornare il proprio elenco di app che supportano le schede di app.

fun destroy()

Chiama questo metodo quando un'attività che utilizza un host viene distrutta in modo che l'host possa ripulire tutte le connessioni e i membri interni.

fun registerListener(AppCardListener)

Utilizzato per registrare un AppCardListener.

fun unregisterListener(AppCardListener)

Utilizzato per annullare la registrazione di un AppCardListener.

fun getAllAppCards(AppCardContext)

Chiama questo metodo per fornire a un 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)

Chiama questo metodo per fornire a un AppCardListener registrato un'AppCard specifica, dato un AppCardContext che fornisce ai fornitori suggerimenti su come strutturare la loro AppCard.

fun notifyAppCardRemoved(appIdentifier, String)

Avvisa un fornitore di AppCard che la sua AppCard non è più attiva.

fun notifyAppCardInteraction(appIdentifier, String, String, String)

Avvisare un fornitore di AppCard che è stata eseguita un'interazione con la sua AppCard. L'unica interazione supportata è un clic sul pulsante, indicato da un AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK.

Consigliamo di creare un pulsante per una scheda dell'app con un ascoltatore onClick che chiami questa funzione con appIdentifier, l'ID scheda dell'app, l'ID componente e l'ID interazione.

fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)

Invia un aggiornamento 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

  1. 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.

  2. 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.