A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release
anziché aosp-main
per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Creare una scheda dell'app
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Per creare una scheda app, un'app deve creare un provider nel manifest che estenda
AppCardContentProvider
. AppCardContentProvider
astrae i dettagli
sottostanti per facilitare la creazione di AppCard.
Dichiarazione del manifest
Per creare una scheda app, un'app deve creare un provider nel manifest per estendere
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>
Per ogni pacchetto può essere definito un solo fornitore con queste proprietà:
android:exported="true"
android:enabled="true"
android:permission="@string/host_permission"
OPPURE,
@string/host_permission
esiste nella libreria AppCard e definisce un'autorizzazione a seconda della versione dell'API Android del sistema.
L'utilizzo della risorsa stringa funziona solo quando la build viene creata con Gradle. Quando utilizzi
Soong, specifica la stringa esplicita con il valore della risorsa stringa in base
al qualificatore di risorsa appropriato.
(predefinito) android:grantUriPermissions="false"
(predefinito) android:forceUriPermissions="false"
Per evitare risultati imprevisti, è necessario che il fornitore definisca una sola
autorità solo in android:authorities
.
Dichiara un filtro per intent basato sull'azione,
com.android.car.appcard.APP_CARD_PROVIDER
Estendi AppCardContentProvider
Questa sezione descrive i metodi finali override e protected.
Metodi di override
val authority: String
Utilizza questo metodo per restituire l'autorità definita nella proprietà
android:authorities
del file manifest.
fun onCreate(): Boolean
Questo metodo deve chiamare super.onCreate()
. Utilizza questo
metodo per configurare funzionalità che potrebbero potenzialmente causare un ritardo se configurate
quando viene richiesta una scheda app.
val appCardIds: List
Utilizza questo metodo per restituire l'elenco degli ID AppCard supportati. Ti
consigliamo di rendere ogni ID dettagliato, poiché questa stringa viene utilizzata per registrare gli errori.
fun onAppCardAdded(String, AppCardContext): AppCard
Questo metodo viene chiamato quando una scheda app viene mostrata per la prima volta e
fornisce l'ID relativo alla scheda app e il AppCardContext
che fornisce
suggerimenti su come viene visualizzata la scheda app.
Utilizza questo metodo per configurare qualsiasi funzionalità richiesta dalle AppCard
supportate come fornitore. Una volta chiamata questa funzione, la scheda app che
corrisponde all'ID specificato viene considerata attiva.
fun onAppCardRemoved(String)
Questo metodo viene chiamato quando non vengono mostrate altre istanze di AppCard all'utente e gestisce tutta la pulizia. Quando viene chiamata questa funzione, la AppCard
corrispondente all'ID specificato viene considerata inattiva.
fun onAppCardContextChanged(String, AppCardContext)
Questo metodo viene chiamato quando il sistema vuole aggiornare la modalità di visualizzazione di una scheda app e invia un AppCardContext
aggiornato.
Metodi finali protetti
fun sendAppCardUpdate(AppCard)
Richiama questo metodo per mettere in coda un aggiornamento per una scheda app attiva.
fun sendAppCardComponentUpdate(String, Component)
Richiama questo metodo per mettere in coda un aggiornamento per un componente in una scheda
app attiva. Se il componente specificato è taggato con EnforceFastUpdateRate
, l'aggiornamento viene inviato immediatamente.
Domande frequenti
Dove si trovano le implementazioni di esempio?
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-09-05 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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/)"]]