Verwenden Sie AppCardHost
, um mit Apps zu kommunizieren, die App-Infokarten anzeigen.
Berechtigungen
Alle Apps, die eine AppCardHost
verwenden, müssen die folgenden Berechtigungen haben:
android.permission.INTERACT_ACROSS_USERS_FULL
android.permission.QUERY_ALL_PACKAGES
- (Nur bei API-Level 34 und höher)
android.car.permission.BIND_APP_CARD_PROVIDER
Initialisieren
Geben Sie Folgendes an, um den Host zu initialisieren:
- Kontext
updateRate
Aktualisierungsrate der App-Karte in Millisekunden.fastUpdateRate
Aktualisierungsrate in Millisekunden für mitEnforceFastUpdateRate
getaggte KomponentenresponseExecutor
Einen Thread, in dem Sie Antworten von AppCard-Apps erhalten möchten.
Design
Mit einem AppCardHost
können Sie auf zwei Arten interagieren:
- Als
AppCardListener
registrieren
ODER,
- Interaktionen mit den
AppCardHost
APIs
AppCardListener
Die AppCardListener
-Komponente registriert sich bei einem AppCardHost
, um Kommunikationsupdates von den Apps AppCardHost
und AppCard zu erhalten.
Die Schnittstellenfunktionen eines AppCardListener
werden hier beschrieben.
fun onAppCardReceived(AppCardContainer)
AppCardContainer
gesendet, die eine App-Infokarte und eine appIdentifier
enthält, um die App zu identifizieren, die die App-Infokarte gesendet hat.fun onComponentReceived(AppCardComponentContainer)
AppCardComponentContainer
gesendet, die eine AppCard-Komponente, Identifier
zur Identifizierung der App, die die AppCard gesendet hat, und eine String-ID enthält, die auf die AppCard verweist, mit der die Komponente verknüpft ist.fun onProviderRemoved(String, String?)
Wenn „authority“ {@code null}
ist, wurde ein ganzes Paket entfernt.
fun onProviderAdded(String, String?)
Verwendungsbeispiel Verwenden Sie diese Funktion als Trigger, um alle verfügbaren App-Karten in einer App-Kartenauswahl zu aktualisieren. Wenn „authority“ {@code null}
ist, wurde ein ganzes Paket hinzugefügt.
fun onPackageCommunicationError(appIdentifier, Throwable)
AppCardHost
Verwendungsbeispiel Mit dieser Methode können Sie dem Nutzer mitteilen, dass bei einer ausgewählten App-Karte ein Fehler aufgetreten ist.
APIs
fun refreshCompatibleapp()
fun destroy()
fun registerListener(AppCardListener)
AppCardListener
verwendet.fun unregisterListener(AppCardListener)
AppCardListener
aufzuheben.fun getAllAppCards(AppCardContext)
AppCardListener
alle im System verfügbaren App-Karten mit einer bestimmten AppCardContext
zur Verfügung zu stellen, die den Anbietern Hinweise zur Strukturierung ihrer App-Karte gibt.fun requestAppCard(AppCardContext, appIdentifier, String)
AppCardListener
eine bestimmte App-Karte mit einer AppCardContext
zur Verfügung zu stellen, die den Anbietern Hinweise zur Strukturierung ihrer App-Karte gibt.fun notifyAppCardRemoved(appIdentifier, String)
fun notifyAppCardInteraction(appIdentifier, String, String, String)
AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK
gekennzeichnet ist.
onClick
-Listener zu erstellen, der diese Funktion mit appIdentifier
, der App-Karten-ID, der Komponenten-ID und der Interaktions-ID aufruft.fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)
AppCardContext
-Update für eine bestimmte App-Karte. Wenn Sie beispielsweise vom Parkmodus in den Fahrmodus wechseln, verwenden Sie diese Methode, um ein AppCardContext
-Update zu senden, bei dem isInteractable
für jede aktive App-Karte auf false
festgelegt ist.Häufig gestellte Fragen
Wo finde ich Beispielimplementierungen?
Beispielhost Hier werden alle im System verfügbaren App-Infokarten sowie Testfunktionen angezeigt.
DriverUI und Pano Manager Der Pano Manager fungiert als Auswähler, während DriverUI als Präsentator dient.
Wie viele App-Karten kann jede
AppCardContentProvider
unterstützen?Ein
AppCardContentProvider
kann eine unbegrenzte Anzahl von App-Karten unterstützen. Achten Sie jedoch darauf, die Anzahl der App-Infokarten so zu wählen, dass die Leistung nicht beeinträchtigt wird und die Nutzerfreundlichkeit nicht leidet.