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:
- 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
?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.