Usa AppCardHost
para comunicarte con las apps que muestran tarjetas de apps.
Permisos
Cualquier app que use un AppCardHost
debe tener los siguientes permisos:
android.permission.INTERACT_ACROSS_USERS_FULL
android.permission.QUERY_ALL_PACKAGES
- (solo en el nivel de API 34 y versiones posteriores)
android.car.permission.BIND_APP_CARD_PROVIDER
Inicialización
Para inicializar el host, proporciona lo siguiente:
- Contexto
updateRate
Tasa de actualización de la tarjeta de aplicación en milisegundos.fastUpdateRate
Tasa de actualización en milisegundos para los componentes etiquetados conEnforceFastUpdateRate
responseExecutor
Es un subproceso en el que deseas recibir respuestas de las apps de AppCard.
Diseño
Se puede interactuar con un AppCardHost
de una de las siguientes maneras:
- Regístrate como
AppCardListener
O
- Interactuar con las APIs de
AppCardHost
AppCardListener
El componente AppCardListener
se registra con un AppCardHost
para recibir actualizaciones de comunicación de las apps AppCardHost
y AppCard.
Aquí se detallan las funciones de interfaz de un AppCardListener
.
fun onAppCardReceived(AppCardContainer)
AppCardContainer
que proporciona una tarjeta de aplicación y un appIdentifier
para identificar la app que envió la tarjeta de aplicación.fun onComponentReceived(AppCardComponentContainer)
AppCardComponentContainer
, que proporciona un componente de AppCards, Identifier
, para identificar la app que envió la AppCard, y un ID de cadena para apuntar a la AppCard con la que está relacionado el componente.fun onProviderRemoved(String, String?)
Si la autoridad es {@code null}
, se quitó un paquete completo.
fun onProviderAdded(String, String?)
Ejemplo de uso. Usa esta función como activador para actualizar todas las tarjetas de aplicación disponibles en un selector de tarjetas de aplicación. Si la autoridad es {@code null}
, se agregó un paquete completo.
fun onPackageCommunicationError(appIdentifier, Throwable)
AppCardHost
encuentra un error cuando se comunica con un proveedor de AppCard.
Ejemplo de uso. Usa este método para mostrarle al usuario que una tarjeta de aplicación que eligió tuvo un error.
APIs
fun refreshCompatibleapp()
fun destroy()
fun registerListener(AppCardListener)
AppCardListener
.fun unregisterListener(AppCardListener)
AppCardListener
.fun getAllAppCards(AppCardContext)
AppCardListener
registrado con todas las tarjetas de aplicación proporcionadas en el sistema con un AppCardContext
determinado que les proporciona sugerencias a los proveedores sobre cómo estructurar su tarjeta de aplicación.fun requestAppCard(AppCardContext, appIdentifier, String)
AppCardListener
registrado con una AppCard específica, dado un AppCardContext
que les da sugerencias a los proveedores sobre cómo estructurar su AppCard.fun notifyAppCardRemoved(appIdentifier, String)
fun notifyAppCardInteraction(appIdentifier, String, String, String)
AppCardMessageConstants.InteractionMessageConstants.MSG_INTERACTION_ON_CLICK
.
onClick
que llame a esta función con appIdentifier
, el ID de la tarjeta de aplicación, el ID del componente y el ID de interacción.fun sendAppCardContextUpdate(AppCardContext, appIdentifier, String)
AppCardContext
para una AppCard específica. Por ejemplo, cuando cambies del modo de estacionamiento al modo de conducción, usa este método para enviar una actualización de AppCardContext
en la que isInteractable
se establezca en false
para cada AppCard activa.Preguntas frecuentes
¿Dónde puedo encontrar implementaciones de ejemplo?
Host de muestra. Muestra todas las tarjetas de aplicación disponibles en el sistema, junto con las capacidades de prueba.
DriverUI y el administrador de Pano El administrador de Pano actúa como el selector, mientras que DriverUI actúa como el presentador.
¿Cuántas tarjetas de aplicación puede admitir cada
AppCardContentProvider
?Un
AppCardContentProvider
puede admitir una cantidad infinita de tarjetas de aplicación. Sin embargo, asegúrate de equilibrar la cantidad de tarjetas de aplicación con un rendimiento degradado en comparación con una experiencia del usuario positiva.