A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Crea una tarjeta de aplicación
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Para crear una AppCard, una app debe crear un proveedor en el manifiesto que extienda AppCardContentProvider
. El AppCardContentProvider
abstrae los detalles subyacentes para facilitar la creación de AppCards.
Declaración del manifiesto
Para crear una AppCard, una app debe crear un proveedor en el manifiesto para extender AppCardContentProvider
.
<provider android:name=".SimpleAppCardContentProvider"
android:authorities="com.example.appcard.sample.media"
android:permission="@string/host_permission"
android:exported="true&>quot;
< android:>enabled="tru<e"
intent-filter
action android:>name="co<m.android.car.>a<ppcard.AP>P
_CARD_PROVIDER" /
/intent-filter
/provider
Solo se puede definir un proveedor por paquete con las siguientes propiedades:
android:exported="true"
android:enabled="true"
android:permission="@string/host_permission"
O BIEN
@string/host_permission
existe en la biblioteca de AppCard y define un permiso según la versión de la API de Android del sistema.
El uso del recurso de cadena solo funciona cuando se compila con Gradle. Cuando uses Soong, especifica la cadena explícita con el valor del recurso de cadena según el calificador de recursos adecuado.
(predeterminado) android:grantUriPermissions="false"
(predeterminado) android:forceUriPermissions="false"
Para evitar resultados inesperados, es necesario que el proveedor defina una sola autoridad únicamente en android:authorities
.
Declara un filtro de intents basado en acciones, com.android.car.appcard.APP_CARD_PROVIDER
Extiende AppCardContentProvider
En esta sección, se describen los métodos finales anular y protegido.
Anular métodos
val authority: String
Usa este método para devolver la autoridad definida en la propiedad del manifiesto android:authorities
.
fun onCreate(): Boolean
Este método debe llamar a super.onCreate()
. Usa este método para configurar una funcionalidad que podría causar una demora si se configura cuando se solicita una AppCard.
val appCardIds: List
Usa este método para devolver la lista de IDs de AppCard admitidos. Recomendamos que cada ID sea detallado, ya que esta cadena se usa para registrar errores.
fun onAppCardAdded(String, AppCardContext): AppCard
Se llama a este método cuando se muestra una AppCard por primera vez y proporciona el ID relacionado con la AppCard y el AppCardContext
que proporciona sugerencias sobre cómo se muestra la AppCard.
Usa este método para configurar cualquier funcionalidad que requieran las AppCards admitidas como proveedor. Una vez que se llama a esta función, se considera que la AppCard que corresponde al ID determinado está activa.
fun onAppCardRemoved(String)
Se llama a este método cuando no se muestran más instancias de AppCard al usuario y controla toda la limpieza. Cuando se llama a esta función, la AppCard que corresponde al ID determinado se considera inactiva.
fun onAppCardContextChanged(String, AppCardContext)
Se llama a este método cuando el sistema quiere actualizar la forma en que se muestra una AppCard y envía un AppCardContext
actualizado.
Métodos finales protegidos
fun sendAppCardUpdate(AppCard)
Invoca este método para poner en cola una actualización de una AppCard activa.
fun sendAppCardComponentUpdate(String, Component)
Invoca este método para poner en cola una actualización de un componente en una AppCard activa. Si el componente determinado está etiquetado con EnforceFastUpdateRate
, la actualización se envía de inmediato.
Preguntas frecuentes
¿Dónde se encuentran las implementaciones de ejemplo?
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-09-04 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-04 (UTC)"],[],[],null,["To create an AppCard, an app must create a provider in the manifest that extends\n`AppCardContentProvider`. The `AppCardContentProvider` abstracts away underlying\ndetails to facilitate the creation of AppCards.\n\nManifest declaration\n\nTo create an AppCard, an app must create a provider in the manifest to extend\n`AppCardContentProvider`. \n\n \u003cprovider android:name=\".SimpleAppCardContentProvider\"\n android:authorities=\"com.example.appcard.sample.media\"\n android:permission=\"@string/host_permission\"\n android:exported=\"true&\u003equot;\n \u003c android:\u003eenabled=\"tru\u003ce\"\n intent-filter\n action android:\u003ename=\"co\u003cm.android.car.\u003ea\u003cppcard.AP\u003eP_CARD_PROVIDER\" /\n /intent-filter\n /provider\n\n**Only one provider can be defined per package** and with these properties:\n\n- `android:exported=\"true\"`\n- `android:enabled=\"true\"`\n- `android:permission=\"@string/host_permission\"`\n\n OR,\n - `android:readPermission=\"@string/host_permission\"`\n\n AND,\n\n `android:writePermission=\"@string/host_permission\"`\n- `@string/host_permission` exists in the AppCard library and defines a\n permission depending on the Android API version of the system.\n\n Using the string resource works only when building with Gradle. When using\n Soong, specify the explicit string with the string resource value according\n to the appropriate resource qualifier.\n- (*default* ) `android:grantUriPermissions=\"false\"`\n\n- (*default* ) `android:forceUriPermissions=\"false\"`\n\n To avoid unexpected results, it's required that the provider define a single\n authority **only** in `android:authorities`.\n- Declare an action-based intent filter,\n `com.android.car.appcard.APP_CARD_PROVIDER`\n\nExtend AppCardContentProvider\n\nThis section describes **override** and **protected** final methods.\n\nOverride methods\n\n\u003cbr /\u003e\n\n`val authority: String` Use this method to return the authority defined in the `android:authorities` manifest property.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n`fun onCreate(): Boolean` This method must call `super.onCreate()`. Use this method to set up functionality that could potentially cause a delay if set up when an AppCard is requested.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n`val appCardIds: List` Use this method to return the list of supported AppCard IDs. We recommend making each ID verbose since this string is used to log errors.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n`fun onAppCardAdded(String, AppCardContext): AppCard` This method is called when an AppCard is shown for the first time and provides the ID related to the AppCard and the `AppCardContext` that provide hints as to how the AppCard is displayed.\n\n\u003cbr /\u003e\n\nUse this method to set up any functionality required by the AppCards\nsupported as a provider. Once this function is called, the AppCard that\ncorresponds to the given ID is considered to be **active.**\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n`fun onAppCardRemoved(String)` This method is called when no remaining instances of the AppCard are shown to the user and handles all clean up. When this function is called, the AppCard that corresponds to the given ID is considered **inactive.**\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n`fun onAppCardContextChanged(String, AppCardContext)` This method is called when the system wants to update how an AppCard is displayed and sends an updated `AppCardContext`.\n\n\u003cbr /\u003e\n\nProtected final methods\n\n\u003cbr /\u003e\n\n`fun sendAppCardUpdate(AppCard)` Invoke this method to queue an update for an active AppCard.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n`fun sendAppCardComponentUpdate(String, Component)` Invoke this method to queue an update for a component in an active AppCard. If the given component is tagged with `EnforceFastUpdateRate`, then the update is sent immediately.\n\n\u003cbr /\u003e\n\nFAQ\n\nWhere are the sample implementations?\n\n- [Calendar AppCard](https://android.googlesource.com/platform/packages/apps/Car/libs/+/refs/tags/ub-automotive-master-20250418/car-app-card-lib/sample-calendar-app/)\n- [Media AppCard](https://android.googlesource.com/platform/packages/apps/Car/libs/+/refs/tags/ub-automotive-master-20250418/car-app-card-lib/sample-media-app/)\n- [Weather AppCard](https://android.googlesource.com/platform/packages/apps/Car/libs/+/refs/tags/ub-automotive-master-20250418/car-app-card-lib/sample-weather-app/)"]]