Konfigurowanie hosta karty aplikacji

Użyj AppCardHost, aby komunikować się z aplikacjami, które wyświetlają karty aplikacji.

Uprawnienia

Aplikacja, która korzysta z uprawnienia AppCardHost, musi mieć te uprawnienia:

  • android.permission.INTERACT_ACROSS_USERS_FULL
  • android.permission.QUERY_ALL_PACKAGES
  • (tylko w poziomie API 34 lub nowszym)android.car.permission.BIND_APP_CARD_PROVIDER

Zainicjuj

Aby zainicjować hosta, podaj:

  • Kontekst
  • updateRate Częstotliwość aktualizacji karty aplikacji (w milisekundach).
  • fastUpdateRate Częstotliwość aktualizacji w milisekundach w przypadku komponentów oznaczonych etykietą EnforceFastUpdateRate
  • responseExecutor Wątek, w którym chcesz otrzymywać odpowiedzi z aplikacji AppCard.

Projektowanie

Z elementem AppCardHost można wchodzić w interakcję na 2 sposoby:

LUB

AppCardListener

Komponent AppCardListener rejestruje się w usługach AppCardHost, aby otrzymywać powiadomienia z aplikacji AppCardHost i AppCard. Tutaj znajdziesz szczegółowe informacje o funkcjach interfejsu AppCardListener.

fun onAppCardReceived(AppCardContainer)

Ta funkcja jest wywoływana po otrzymaniu karty aplikacji z aplikacji. Jest ona wysyłana jako AppCardContainer, który zawiera kartę aplikacji i appIdentifier, aby zidentyfikować aplikację, która wysłała kartę aplikacji

fun onComponentReceived(AppCardComponentContainer)

Ta funkcja jest wywoływana po otrzymaniu od aplikacji komponentu karty aplikacji. Jest on wysyłany jako AppCardComponentContainer, który zawiera komponent karty aplikacji, Identifier, aby zidentyfikować aplikację, która wysłała kartę aplikacji, oraz identyfikator ciągu znaków wskazujący kartę aplikacji, z którą jest powiązany komponent.

fun onProviderRemoved(String, String?)

Ta funkcja jest uruchamiany, gdy dostawca kart aplikacji został usunięty lub wyłączony. Użyj tej metody, aby usunąć wszystkie aktywne karty aplikacji powiązane z danym imieniem pakietu i uprawnieniami dostawcy.

Jeśli autorytet to {@code null}, oznacza to, że usunięto cały pakiet.

fun onProviderAdded(String, String?)

Ta funkcja jest wywoływana po dodaniu lub włączeniu dostawcy kart AppCard.

Przykładowe zastosowanie Użyj tej funkcji jako elementu wyzwalającego, aby odświeżyć wszystkie dostępne karty aplikacji w selektorze kart aplikacji. Jeśli autorytet to {@code null}, oznacza to, że dodano cały pakiet.

fun onPackageCommunicationError(appIdentifier, Throwable)

Ta funkcja jest wywoływana, gdy AppCardHost napotka błąd podczas komunikacji z dostawcą kart AppCard.

Przykładowe zastosowanie Użyj tej metody, aby poinformować użytkownika, że wybrana przez niego karta aplikacji napotkała błąd.

Interfejsy API

fun refreshCompatibleapp()

Należy ją wywołać, gdy wznowiona zostanie aktywność korzystająca z hosta, aby host mógł odświeżyć listę aplikacji obsługujących karty aplikacji.

fun destroy()

Wywołuj tę metodę, gdy aktywność, która używa hosta, zostanie zniszczona, aby host mógł usunąć wszystkie połączenia i wewnętrzne elementy.

fun registerListener(AppCardListener)

Używana do rejestracji AppCardListener.

fun unregisterListener(AppCardListener)

Używany do wyrejestrowania AppCardListener.

fun getAllAppCards(AppCardContext)

Wywołaj tę metodę, aby podać zarejestrowanemu AppCardListener wszystkie karty AppCard udostępnione w systemie z danym AppCardContext, co daje dostawcom wskazówki dotyczące struktury karty AppCard.

fun requestAppCard(AppCardContext, appIdentifier, String)

Wywołaj tę metodę, aby podać zarejestrowanemu AppCardListener konkretną kartę aplikacji, podając AppCardContext, która zawiera wskazówki dla dostawców dotyczące struktury karty aplikacji.

fun notifyAppCardRemoved(appIdentifier, String)

Poinformuj dostawcę karty AppCard, że karta nie jest już aktywna.

fun notifyAppCardInteraction(appIdentifier, String, String, String)

Powiadomienie dostawcy karty AppCard o jej kliknięciu. Jedyną obsługiwaną interakcją jest kliknięcie przycisku, które jest sygnalizowane przez ikonęAppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK.

Zalecamy utworzenie przycisku karty aplikacji z odbiorcą onClick, który wywołuje tę funkcję z użyciem appIdentifier, identyfikatora karty aplikacji, identyfikatora komponentu i identyfikatora interakcji.

fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)

Wyślij aktualizację AppCardContext określonej karty aplikacji. Na przykład podczas przechodzenia z trybu Parkowanie do trybu Jazda możesz użyć tej metody, aby wysłać aktualizację AppCardContext, w której wartość parametru isInteractable dla każdej aktywnej karty aplikacji jest ustawiona na false.

Najczęstsze pytania

  1. Gdzie mogę znaleźć przykładowe implementacje?

    • Przykładowy gospodarz Wyświetla wszystkie dostępne w systemie karty aplikacji wraz z możliwościami testowania.

    • DriverUI i Menedżer panoram. Menedżer panoramy działa jako selektor, a DriverUI jako prezenter.

  2. Ile kart aplikacji może obsługiwać każda AppCardContentProvider?

    AppCardContentProvider może obsługiwać nieskończoną liczbę kart aplikacji. Pamiętaj jednak, aby zachować równowagę między liczbą kart aplikacji a ich wydajnością oraz wrażeniami użytkowników.