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_FULLandroid.permission.QUERY_ALL_PACKAGES- (tylko w poziomie API 34 lub nowszym)
android.car.permission.BIND_APP_CARD_PROVIDER
Zainicjuj
Aby zainicjować hosta, podaj:
- Kontekst
updateRateCzęstotliwość aktualizacji karty aplikacji (w milisekundach).fastUpdateRateCzęstotliwość aktualizacji w milisekundach w przypadku komponentów oznaczonych etykietąEnforceFastUpdateRateresponseExecutorWątek, w którym chcesz otrzymywać odpowiedzi z aplikacji AppCard.
Projektowanie
Z elementem AppCardHost można wchodzić w interakcję na 2 sposoby:
- Zarejestruj się jako
AppCardListener
LUB
- Interakcja z interfejsami API
AppCardHost
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)AppCardContainer, który zawiera kartę aplikacji i appIdentifier, aby zidentyfikować aplikację, która wysłała kartę aplikacjifun onComponentReceived(AppCardComponentContainer)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?)Jeśli autorytet to {@code null}, oznacza to, że usunięto cały pakiet.
fun onProviderAdded(String, String?)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)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()fun destroy()fun registerListener(AppCardListener)AppCardListener.fun unregisterListener(AppCardListener)AppCardListener.fun getAllAppCards(AppCardContext)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)AppCardListener konkretną kartę aplikacji, podając AppCardContext, która zawiera wskazówki dla dostawców dotyczące struktury karty aplikacji.fun notifyAppCardRemoved(appIdentifier, String)fun notifyAppCardInteraction(appIdentifier, String, String, String)AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK.
onClick, który wywołuje tę funkcję z użyciem appIdentifier, identyfikatora karty aplikacji, identyfikatora komponentu i identyfikatora interakcji.fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)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
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.
Ile kart aplikacji może obsługiwać każda
AppCardContentProvider?AppCardContentProvidermoż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.