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_FULLandroid.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
updateRateAktualisierungsrate der App-Karte in Millisekunden.fastUpdateRateAktualisierungsrate in Millisekunden für mitEnforceFastUpdateRategetaggte KomponentenresponseExecutorEinen Thread, in dem Sie Antworten von AppCard-Apps erhalten möchten.
Design
Mit einem AppCardHost können Sie auf zwei Arten interagieren:
- Als
AppCardListenerregistrieren
ODER,
- Interaktionen mit den
AppCardHostAPIs
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
AppCardContentProviderunterstützen?Ein
AppCardContentProviderkann 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.