Используйте AppCardHost для взаимодействия с приложениями, отображающими AppCards.
Разрешения
Любое приложение, использующее AppCardHost , должно иметь следующие разрешения:
-
android.permission.INTERACT_ACROSS_USERS_FULL -
android.permission.QUERY_ALL_PACKAGES - ( Только в API уровня 34 и выше)
android.car.permission.BIND_APP_CARD_PROVIDER
Инициализировать
Для инициализации хоста укажите:
- Контекст
-
updateRateЧастота обновления AppCard в миллисекундах. -
fastUpdateRateСкорость обновления в миллисекундах для компонентов, помеченных какEnforceFastUpdateRate -
responseExecutorПоток, в котором вы хотите получать ответы от приложений AppCard.
Дизайн
С AppCardHost можно взаимодействовать двумя способами:
- Зарегистрируйтесь как
AppCardListener
ИЛИ,
- Взаимодействие с API
AppCardHost
AppCardListener
Компонент AppCardListener регистрируется в AppCardHost для получения обновлений связи от приложений AppCardHost и AppCard. Функции интерфейса AppCardListener подробно описаны здесь.
fun onAppCardReceived(AppCardContainer)AppCardContainer , который предоставляет AppCard и appIdentifier для идентификации приложения, отправившего AppCardfun onComponentReceived(AppCardComponentContainer)AppCardComponentContainer , который предоставляет компонент AppCards, Identifier для идентификации приложения, отправившего AppCard, и строковый ID для указания на AppCard, с которым связан компонент.fun onProviderRemoved(String, String?) Если полномочия равны {@code null} , то был удален весь пакет.
fun onProviderAdded(String, String?) Пример использования. Используйте эту функцию как триггер для обновления всех доступных AppCards в AppCard picker. Если полномочия равны {@code null} , то был добавлен целый пакет.
fun onPackageCommunicationError(appIdentifier, Throwable)AppCardHost обнаруживает ошибку при взаимодействии с поставщиком AppCard.Пример использования. Используйте этот метод, чтобы показать пользователю, что выбранная им AppCard столкнулась с ошибкой.
API-интерфейсы
fun refreshCompatibleapp()fun destroy()fun registerListener(AppCardListener)AppCardListener .fun unregisterListener(AppCardListener)AppCardListener .fun getAllAppCards(AppCardContext)AppCardListener все AppCard, имеющиеся в системе, с заданным AppCardContext , который предоставляет поставщикам подсказки о том, как структурировать их AppCard.fun requestAppCard(AppCardContext, appIdentifier, String)AppCardListener определенную AppCard, заданную AppCardContext , которая дает подсказки поставщикам о том, как структурировать их AppCard.fun notifyAppCardRemoved(appIdentifier, String)fun notifyAppCardInteraction(appIdentifier, String, String, String)AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK .onClick , который вызывает эту функцию с appIdentifier , AppCard ID, компонентным ID и взаимодействием ID.fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)AppCardContext для определенной AppCard. Например, при переходе из режима Park в режим Drive используйте этот метод для отправки обновления AppCardContext , в котором isInteractable устанавливается в false для каждой активной AppCard.Часто задаваемые вопросы
Где я могу найти примеры реализаций?
Пример хоста . Показывает все доступные AppCards в системе, а также возможности тестирования.
DriverUI и менеджер панорам . Менеджер панорам выступает в качестве выбора, а DriverUI — в качестве презентатора.
Сколько AppCard может поддерживать каждый
AppCardContentProvider?AppCardContentProviderможет поддерживать бесконечное количество AppCards. Однако обязательно сбалансируйте количество AppCards с ухудшенной производительностью и положительным пользовательским опытом.
Используйте AppCardHost для взаимодействия с приложениями, отображающими AppCards.
Разрешения
Любое приложение, использующее AppCardHost , должно иметь следующие разрешения:
-
android.permission.INTERACT_ACROSS_USERS_FULL -
android.permission.QUERY_ALL_PACKAGES - ( Только в API уровня 34 и выше)
android.car.permission.BIND_APP_CARD_PROVIDER
Инициализировать
Для инициализации хоста укажите:
- Контекст
-
updateRateЧастота обновления AppCard в миллисекундах. -
fastUpdateRateСкорость обновления в миллисекундах для компонентов, помеченных какEnforceFastUpdateRate -
responseExecutorПоток, в котором вы хотите получать ответы от приложений AppCard.
Дизайн
С AppCardHost можно взаимодействовать двумя способами:
- Зарегистрируйтесь как
AppCardListener
ИЛИ,
- Взаимодействие с API
AppCardHost
AppCardListener
Компонент AppCardListener регистрируется в AppCardHost для получения обновлений связи от приложений AppCardHost и AppCard. Функции интерфейса AppCardListener подробно описаны здесь.
fun onAppCardReceived(AppCardContainer)AppCardContainer , который предоставляет AppCard и appIdentifier для идентификации приложения, отправившего AppCardfun onComponentReceived(AppCardComponentContainer)AppCardComponentContainer , который предоставляет компонент AppCards, Identifier для идентификации приложения, отправившего AppCard, и строковый ID для указания на AppCard, с которым связан компонент.fun onProviderRemoved(String, String?) Если полномочия равны {@code null} , то был удален весь пакет.
fun onProviderAdded(String, String?) Пример использования. Используйте эту функцию как триггер для обновления всех доступных AppCards в AppCard picker. Если полномочия равны {@code null} , то был добавлен целый пакет.
fun onPackageCommunicationError(appIdentifier, Throwable)AppCardHost обнаруживает ошибку при взаимодействии с поставщиком AppCard.Пример использования. Используйте этот метод, чтобы показать пользователю, что выбранная им AppCard столкнулась с ошибкой.
API-интерфейсы
fun refreshCompatibleapp()fun destroy()fun registerListener(AppCardListener)AppCardListener .fun unregisterListener(AppCardListener)AppCardListener .fun getAllAppCards(AppCardContext)AppCardListener все AppCard, имеющиеся в системе, с заданным AppCardContext , который предоставляет поставщикам подсказки о том, как структурировать их AppCard.fun requestAppCard(AppCardContext, appIdentifier, String)AppCardListener определенную AppCard, заданную AppCardContext , которая дает подсказки поставщикам о том, как структурировать их AppCard.fun notifyAppCardRemoved(appIdentifier, String)fun notifyAppCardInteraction(appIdentifier, String, String, String)AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK .onClick , который вызывает эту функцию с appIdentifier , AppCard ID, компонентным ID и взаимодействием ID.fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)AppCardContext для определенной AppCard. Например, при переходе из режима Park в режим Drive используйте этот метод для отправки обновления AppCardContext , в котором isInteractable устанавливается в false для каждой активной AppCard.Часто задаваемые вопросы
Где я могу найти примеры реализаций?
Пример хоста . Показывает все доступные AppCards в системе, а также возможности тестирования.
DriverUI и менеджер панорам . Менеджер панорам выступает в качестве выбора, а DriverUI — в качестве презентатора.
Сколько AppCard может поддерживать каждый
AppCardContentProvider?AppCardContentProviderможет поддерживать бесконечное количество AppCards. Однако обязательно сбалансируйте количество AppCards с ухудшенной производительностью и положительным пользовательским опытом.
Используйте AppCardHost для взаимодействия с приложениями, отображающими AppCards.
Разрешения
Любое приложение, использующее AppCardHost , должно иметь следующие разрешения:
-
android.permission.INTERACT_ACROSS_USERS_FULL -
android.permission.QUERY_ALL_PACKAGES - ( Только в API уровня 34 и выше)
android.car.permission.BIND_APP_CARD_PROVIDER
Инициализировать
Для инициализации хоста укажите:
- Контекст
-
updateRateЧастота обновления AppCard в миллисекундах. -
fastUpdateRateСкорость обновления в миллисекундах для компонентов, помеченных какEnforceFastUpdateRate -
responseExecutorПоток, в котором вы хотите получать ответы от приложений AppCard.
Дизайн
С AppCardHost можно взаимодействовать двумя способами:
- Зарегистрируйтесь как
AppCardListener
ИЛИ,
- Взаимодействие с API
AppCardHost
AppCardListener
Компонент AppCardListener регистрируется в AppCardHost для получения обновлений связи от приложений AppCardHost и AppCard. Функции интерфейса AppCardListener подробно описаны здесь.
fun onAppCardReceived(AppCardContainer)AppCardContainer , который предоставляет AppCard и appIdentifier для идентификации приложения, отправившего AppCardfun onComponentReceived(AppCardComponentContainer)AppCardComponentContainer , который предоставляет компонент AppCards, Identifier для идентификации приложения, отправившего AppCard, и строковый ID для указания на AppCard, с которым связан компонент.fun onProviderRemoved(String, String?) Если полномочия равны {@code null} , то был удален весь пакет.
fun onProviderAdded(String, String?) Пример использования. Используйте эту функцию как триггер для обновления всех доступных AppCards в AppCard picker. Если полномочия равны {@code null} , то был добавлен целый пакет.
fun onPackageCommunicationError(appIdentifier, Throwable)AppCardHost обнаруживает ошибку при взаимодействии с поставщиком AppCard.Пример использования. Используйте этот метод, чтобы показать пользователю, что выбранная им AppCard столкнулась с ошибкой.
API-интерфейсы
fun refreshCompatibleapp()fun destroy()fun registerListener(AppCardListener)AppCardListener .fun unregisterListener(AppCardListener)AppCardListener .fun getAllAppCards(AppCardContext)AppCardListener все AppCard, имеющиеся в системе, с заданным AppCardContext , который предоставляет поставщикам подсказки о том, как структурировать их AppCard.fun requestAppCard(AppCardContext, appIdentifier, String)AppCardListener определенную AppCard, заданную AppCardContext , которая дает подсказки поставщикам о том, как структурировать их AppCard.fun notifyAppCardRemoved(appIdentifier, String)fun notifyAppCardInteraction(appIdentifier, String, String, String)AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK .onClick , который вызывает эту функцию с appIdentifier , AppCard ID, компонентным ID и взаимодействием ID.fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)AppCardContext для определенной AppCard. Например, при переходе из режима Park в режим Drive используйте этот метод для отправки обновления AppCardContext , в котором isInteractable устанавливается в false для каждой активной AppCard.Часто задаваемые вопросы
Где я могу найти примеры реализаций?
Пример хоста . Показывает все доступные AppCards в системе, а также возможности тестирования.
DriverUI и менеджер панорам . Менеджер панорам выступает в качестве выбора, а DriverUI — в качестве презентатора.
Сколько AppCard может поддерживать каждый
AppCardContentProvider?AppCardContentProviderможет поддерживать бесконечное количество AppCards. Однако обязательно сбалансируйте количество AppCards с ухудшенной производительностью и положительным пользовательским опытом.