À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release
au lieu de aosp-main
pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Créer une fiche d'application
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Pour créer une AppCard, une application doit créer un fournisseur dans le fichier manifeste qui étend AppCardContentProvider
. AppCardContentProvider
fait abstraction des détails sous-jacents pour faciliter la création d'AppCards.
Déclaration du fichier manifeste
Pour créer une AppCard, une application doit créer un fournisseur dans le fichier manifeste pour étendre AppCardContentProvider
.
<provider android:name=".SimpleAppCardContentProvider"
android:authorities="com.example.appcard.sample.media"
android:permission="@string/host_permission"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="com.android.car.appcard.APP_CARD_PROVIDER" />
</intent-filter>
</provider>
Un seul fournisseur peut être défini par package avec les propriétés suivantes :
android:exported="true"
android:enabled="true"
android:permission="@string/host_permission"
OU,
@string/host_permission
existe dans la bibliothèque AppCard et définit une autorisation en fonction de la version de l'API Android du système.
L'utilisation de la ressource de chaîne ne fonctionne que lors de la compilation avec Gradle. Lorsque vous utilisez Soong, spécifiez la chaîne explicite avec la valeur de la ressource de chaîne en fonction du qualificatif de ressource approprié.
(par défaut) android:grantUriPermissions="false"
(par défaut) android:forceUriPermissions="false"
Pour éviter les résultats inattendus, le fournisseur doit définir une seule autorité dans android:authorities
.
Déclarez un filtre d'intent basé sur une action :
com.android.car.appcard.APP_CARD_PROVIDER
Étendre AppCardContentProvider
Cette section décrit les méthodes finales override et protected.
Ignorer les méthodes
val authority: String
Utilisez cette méthode pour renvoyer l'autorité définie dans la propriété de fichier manifeste android:authorities
.
fun onCreate(): Boolean
Cette méthode doit appeler super.onCreate()
. Utilisez cette méthode pour configurer des fonctionnalités qui pourraient potentiellement entraîner un retard si elles sont configurées lorsqu'une AppCard est demandée.
val appCardIds: List
Utilisez cette méthode pour renvoyer la liste des ID AppCard compatibles. Nous vous recommandons de créer des ID détaillés, car cette chaîne est utilisée pour consigner les erreurs.
fun onAppCardAdded(String, AppCardContext): AppCard
Cette méthode est appelée lorsqu'une AppCard est affichée pour la première fois. Elle fournit l'ID associé à l'AppCard et le AppCardContext
qui fournit des indications sur la façon dont l'AppCard est affichée.
Utilisez cette méthode pour configurer les fonctionnalités requises par les AppCards compatibles en tant que fournisseur. Une fois cette fonction appelée, l'AppCard correspondant à l'ID donné est considérée comme active.
fun onAppCardRemoved(String)
Cette méthode est appelée lorsqu'aucune instance restante de l'AppCard n'est affichée à l'utilisateur et gère tout le nettoyage. Lorsque cette fonction est appelée, l'AppCard correspondant à l'ID donné est considérée comme inactive.
fun onAppCardContextChanged(String, AppCardContext)
Cette méthode est appelée lorsque le système souhaite mettre à jour la façon dont une AppCard est affichée et envoie un AppCardContext
mis à jour.
Méthodes finales protégées
fun sendAppCardUpdate(AppCard)
Appelez cette méthode pour mettre en file d'attente une mise à jour pour une AppCard active.
fun sendAppCardComponentUpdate(String, Component)
Appelez cette méthode pour mettre en file d'attente une mise à jour pour un composant dans une AppCard active. Si le composant donné est tagué avec EnforceFastUpdateRate
, la mise à jour est envoyée immédiatement.
Questions fréquentes
Où se trouvent les exemples d'implémentation ?
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/05 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/05 (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\"\n android:enabled=\"true\"\u003e\n \u003cintent-filter\u003e\n \u003caction android:name=\"com.android.car.appcard.APP_CARD_PROVIDER\" /\u003e\n \u003c/intent-filter\u003e\n \u003c/provider\u003e\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/)"]]