AppCard-Host konfigurieren

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 mit EnforceFastUpdateRate getaggte Komponenten
  • responseExecutor Einen Thread, in dem Sie Antworten von AppCard-Apps erhalten möchten.

Design

Mit einem AppCardHost können Sie auf zwei Arten interagieren:

ODER,

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)

Diese Funktion wird ausgelöst, wenn eine App-Infokarte von einer App empfangen wurde. Sie wird als 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)

Diese Funktion wird ausgelöst, wenn eine AppCard-Komponente von einer App empfangen wird. Sie wird als 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?)

Diese Funktion wird ausgelöst, wenn ein App-Kartenanbieter entfernt oder deaktiviert wurde. Mit dieser Methode können Sie alle aktiven App-Karten im Zusammenhang mit dem angegebenen Paketnamen und der Anbieterautorität bereinigen.

Wenn „authority“ {@code null} ist, wurde ein ganzes Paket entfernt.

fun onProviderAdded(String, String?)

Diese Funktion wird ausgelöst, wenn ein AppCard-Anbieter hinzugefügt oder aktiviert wurde.

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)

Diese Funktion wird ausgelöst, wenn bei der Kommunikation mit einem AppCard-Anbieter ein Fehler auftritt.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()

Diese Methode sollte immer dann aufgerufen werden, wenn die Aktivität, die den Host verwendet, fortgesetzt wird, damit der Host die Liste der Apps aktualisieren kann, die App-Infokarten unterstützen.

fun destroy()

Diese Methode wird aufgerufen, wenn eine Aktivität, die einen Host verwendet, zerstört wird, damit der Host alle Verbindungen und internen Mitglieder bereinigen kann.

fun registerListener(AppCardListener)

Wird zum Registrieren eines AppCardListener verwendet.

fun unregisterListener(AppCardListener)

Wird verwendet, um die Registrierung eines AppCardListener aufzuheben.

fun getAllAppCards(AppCardContext)

Rufen Sie diese Methode auf, um einer registrierten 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)

Rufen Sie diese Methode auf, um einem registrierten 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)

Einen AppCard-Anbieter darüber informieren, dass seine AppCard nicht mehr aktiv ist

fun notifyAppCardInteraction(appIdentifier, String, String, String)

Einen AppCard-Anbieter benachrichtigen, dass mit seiner AppCard interagiert wurde. Die einzige unterstützte Interaktion ist ein Klick auf eine Schaltfläche, der durch ein AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK gekennzeichnet ist.

Wir empfehlen, für eine App-Karte eine Schaltfläche mit einem 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)

Senden Sie ein 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

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

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