- sintassi:
-
<provider android:authorities="list" android:directBootAware=["true" | "false"] android:enabled=["true" | "false"] android:exported=["true" | "false"] android:grantUriPermissions=["true" | "false"] android:icon="drawable resource" android:initOrder="integer" android:intentMatchingFlags=["none" | "enforceIntentFilter" | "allowNullAction"] android:label="string resource" android:multiprocess=["true" | "false"] android:name="string" android:permission="string" android:process="string" android:readPermission="string" android:syncable=["true" | "false"] android:writePermission="string" > ... </provider>
- contenuto in:
-
<application> - possono contenere:
<meta-data><grant-uri-permission><intent-filter><path-permission><property>- description:
-
Dichiara un componente fornitore di contenuti. Un content provider è una sottoclasse di
ContentProviderche fornisce un accesso strutturato ai dati gestiti dall'applicazione. Tutti i content provider della tua applicazione devono essere definiti in un elemento<provider>nel file manifest. In caso contrario, il sistema non li rileva e non li esegue.Dichiara solo i fornitori di contenuti che fanno parte della tua applicazione. Non dichiarare fornitori di contenuti in altre applicazioni che utilizzi nella tua applicazione.
Il sistema Android memorizza i riferimenti ai fornitori di contenuti in base a una stringa di autorità, parte dell'URI dei contenuti del fornitore. Ad esempio, supponiamo che tu voglia accedere a un fornitore di contenuti che memorizza informazioni sui professionisti sanitari. Per farlo, chiama il metodo
ContentResolver.query(), che accetta un URI che identifica il fornitore, tra gli altri argomenti:content://com.example.project.healthcareprovider/nurses/rn
Lo schema
content:identifica l'URI come un URI contenuto che rimanda a un fornitore di contenuti Android. L'autoritàcom.example.project.healthcareprovideridentifica il provider stesso. Il sistema Android cerca l'autorità nel suo elenco di fornitori noti e delle relative autorità. La sottostringanurses/rnè un percorso utilizzato dal fornitore di contenuti per identificare i sottoinsiemi dei dati del fornitore.Quando definisci il fornitore nell'elemento
<provider>, non includere lo schema o il percorso nell'argomentoandroid:name, ma solo l'autorità.Per informazioni sull'utilizzo e lo sviluppo dei fornitori di contenuti, vedi Fornitori di contenuti.
- attributi:
-
android:authorities-
Un elenco di una o più autorità URI che identificano i dati offerti dal fornitore di contenuti.
Elenca più autorità separando i loro nomi con un punto e virgola.
Per evitare conflitti, utilizza una convenzione di denominazione in stile Java per i nomi delle autorità,
ad esempio
com.example.provider.cartoonprovider. In genere, è il nome della sottoclasseContentProviderche implementa il providerNon esiste un valore predefinito. È necessario specificare almeno un'autorità.
android:enabled- Se il fornitore di contenuti può essere istanziato dal sistema. È
"true"se può esserlo e"false"in caso contrario. Il valore predefinito è"true".L'elemento
<application>ha un proprio attributoenabledche si applica a tutti i componenti dell'applicazione, inclusi i fornitori di contenuti. Affinché il fornitore di contenuti venga attivato, gli attributi<application>e<provider>devono essere"true", come sono entrambi per impostazione predefinita. Se uno dei due è"false", il provider è disattivato. Non può essere istanziato. android:directBootAwareSe il fornitore di contenuti è compatibile con l'avvio diretto, ovvero se può essere eseguito prima che l'utente sblocchi il dispositivo.
Nota: durante l'avvio diretto, un content provider nella tua applicazione può accedere solo ai dati archiviati nello spazio di archiviazione protetto dal dispositivo.
Il valore predefinito è
"false".android:exported-
Indica se il fornitore di contenuti è disponibile per l'utilizzo da parte di altre applicazioni.
-
"true": il provider è disponibile per altre applicazioni. Qualsiasi applicazione può utilizzare l'URI dei contenuti del fornitore per accedervi, in base alle autorizzazioni specificate per il fornitore. -
"false": il fornitore non è disponibile per altre applicazioni. Impostaandroid:exported="false"per limitare l'accesso al fornitore alle tue applicazioni. Solo le applicazioni con lo stesso ID utente (UID) del fornitore o le applicazioni a cui è stato concesso temporaneamente l'accesso al fornitore tramite l'elementoandroid:grantUriPermissionshanno accesso.
Poiché questo attributo è stato introdotto nel livello API 17, tutti i dispositivi con livello API 16 e precedenti si comportano come se questo attributo fosse impostato su
"true". Se impostiandroid:targetSdkVersionsu 17 o versioni successive, il valore predefinito è"false"per i dispositivi che eseguono il livello API 17 e versioni successive.Puoi impostare
android:exported="false"e limitare comunque l'accesso al tuo provider impostando le autorizzazioni con l'attributopermission. -
android:grantUriPermissionsSe le persone che normalmente non hanno l'autorizzazione per accedere ai dati del fornitore di contenuti possono ottenere l'autorizzazione per farlo, superando temporaneamente la limitazione imposta dagli attributi
readPermission,writePermission,permissioneexported.È
"true"se l'autorizzazione può essere concessa e"false"in caso contrario. Se"true", l'autorizzazione può essere concessa a qualsiasi dato del fornitore di contenuti. Se"false", l'autorizzazione può essere concessa solo ai sottoinsiemi di dati elencati negli elementi secondari<grant-uri-permission>, se presenti. Il valore predefinito è"false".La concessione dell'autorizzazione è un modo per concedere a un componente dell'applicazione l'accesso una tantum ai dati protetti da un'autorizzazione. Ad esempio, quando un messaggio email contiene un allegato, l'applicazione di posta potrebbe chiamare il visualizzatore appropriato per aprirlo, anche se il visualizzatore non dispone dell'autorizzazione generale per esaminare tutti i dati del fornitore di contenuti.
In questi casi, l'autorizzazione viene concessa dai flag
FLAG_GRANT_READ_URI_PERMISSIONeFLAG_GRANT_WRITE_URI_PERMISSIONnell'oggettoIntentche attiva il componente. Ad esempio, l'applicazione di posta potrebbe inserireFLAG_GRANT_READ_URI_PERMISSIONinIntentpassato aContext.startActivity(). L'autorizzazione è specifica per l'URI inIntent.Se attivi questa funzionalità impostando questo attributo su
"true"o definendo gli elementi secondari<grant-uri-permission>, chiamaContext.revokeUriPermission()quando un URI coperto viene eliminato dal provider.Vedi anche l'elemento
<grant-uri-permission>.android:icon- Un'icona che rappresenta il fornitore di contenuti.
Questo attributo è impostato come riferimento a una risorsa disegnabile contenente
la definizione dell'immagine. Se non è impostata, viene utilizzata l'icona specificata per l'applicazione
nel suo complesso. Per ulteriori informazioni, consulta l'attributo
icondell'elemento<application>. android:initOrder- L'ordine in cui viene creata l'istanza del fornitore di contenuti, rispetto ad altri fornitori di contenuti ospitati dallo stesso processo. Quando esistono dipendenze tra i fornitori di contenuti, l'impostazione di questo attributo per ciascuno di essi garantisce che vengano creati nell'ordine richiesto da queste dipendenze. Il valore è un numero intero, con i numeri più alti inizializzati per primi.
android:intentMatchingFlags-
Utilizza questo attributo per perfezionare il modo in cui il sistema associa gli intent in entrata ai componenti dell'app. Per impostazione predefinita, non vengono applicate regole di corrispondenza speciali.
Il valore impostato su un tag
<provider>sostituisce il valore impostato sul tag<application>.Il valore deve essere uno o più dei seguenti flag, separati da "
|":Flag Descrizione noneDisattiva tutte le regole di corrispondenza speciali per gli intent in entrata. Quando specifichi più flag, i valori in conflitto vengono risolti dando la precedenza al flag none.enforceIntentFilterApplica una corrispondenza più rigorosa per gli intent in entrata:
- Gli intent espliciti devono corrispondere al filtro per intent del componente di destinazione.
- Gli intent senza un'azione non corrispondono ad alcun filtro per intent.
allowNullActionRilassa le regole di corrispondenza per consentire la corrispondenza degli intent senza un'azione. Questo flag viene utilizzato insieme a
enforceIntentFilterper ottenere il seguente comportamento:- Gli intent espliciti devono corrispondere al filtro per intent del componente di destinazione.
- Gli intent senza un'azione possono corrispondere a qualsiasi filtro per intent.
Per ulteriori informazioni, consulta la sezione Intent più sicuri nelle modifiche al comportamento di Android 16 (livello API 36).
android:label- Un'etichetta leggibile dall'utente per i contenuti forniti.
Se questo attributo non è impostato, viene utilizzata l'etichetta impostata per l'applicazione nel suo complesso. Per ulteriori informazioni, consulta l'attributo
labeldell'elemento<application>.L'etichetta viene in genere impostata come riferimento a una risorsa stringa, in modo che possa essere localizzata come altre stringhe nell'interfaccia utente. Tuttavia, per comodità durante lo sviluppo dell'applicazione, può essere impostato anche come stringa non elaborata.
android:multiprocess- Se l'app viene eseguita in più processi, questo attributo determina se vengono create più istanze del content provider. Se
"true", ogni processo dell'app ha il proprio oggetto fornitore di contenuti. Se"false", i processi dell'app condividono un solo oggetto fornitore di contenuti. Il valore predefinito è"false".Se imposti questo flag su
"true", puoi migliorare le prestazioni riducendo l'overhead della comunicazione interprocesso, ma aumenta anche l'impronta di memoria di ogni processo. android:name- Il nome della classe che implementa il content provider, una sottoclasse di
ContentProvider. Di solito si tratta di un nome di classe completo, ad esempio"com.example.project.TransportationProvider". Tuttavia, come abbreviazione, se il primo carattere del nome è un punto, viene aggiunto al nome del pacchetto specificato nell'elemento<manifest>.Non esiste un valore predefinito. È necessario specificare il nome.
android:permissionIl nome di un'autorizzazione che i client devono avere per leggere o scrivere i dati del content provider. Questo attributo è un modo pratico per impostare una singola autorizzazione sia per la lettura che per la scrittura. Tuttavia, gli attributi
readPermission,writePermissionegrantUriPermissionshanno la precedenza su questo.Se è impostato anche l'attributo
readPermission, questo controlla l'accesso per l'interrogazione del fornitore di contenuti. Se l'attributowritePermissionè impostato, controlla l'accesso per la modifica dei dati del fornitore.Per ulteriori informazioni sulle autorizzazioni, consulta la sezione Autorizzazioni nella panoramica del manifest dell'app e i Suggerimenti per la sicurezza.
android:processIl nome del processo in cui viene eseguito il fornitore di contenuti. Normalmente, tutti i componenti di un'applicazione vengono eseguiti nel processo predefinito creato per l'applicazione. Ha lo stesso nome del pacchetto dell'applicazione.
L'attributo
processdell'elemento<application>può impostare un valore predefinito diverso per tutti i componenti. Tuttavia, ogni componente può sostituire il valore predefinito con il proprio attributoprocess, consentendoti di distribuire l'applicazione su più processi.Se il nome assegnato a questo attributo inizia con i due punti (
:), viene creato un nuovo processo, privato per l'applicazione, quando è necessario e l'attività viene eseguita in questo processo.Se il nome del processo inizia con un carattere minuscolo, l'attività viene eseguita in un processo globale con quel nome, a condizione che abbia l'autorizzazione per farlo. Ciò consente ai componenti di applicazioni diverse di condividere un processo, riducendo l'utilizzo delle risorse.
android:readPermissionUn'autorizzazione che i clienti devono avere per eseguire query sul fornitore di contenuti.
Se il fornitore imposta
android:grantUriPermissionssu"true"o se un determinato client soddisfa le condizioni di un elemento secondario<grant-uri-permission>, il client può ottenere l'accesso in lettura temporaneo ai dati del fornitore di contenuti.Vedi anche gli attributi
permissionewritePermission.android:syncable- Se i dati sotto il controllo del fornitore di contenuti
possono essere sincronizzati con i dati su un server.
"true"se è possibile,"false"in caso contrario. android:writePermissionUn'autorizzazione necessaria ai clienti per apportare modifiche ai dati controllati dal fornitore di contenuti.
Se il fornitore imposta
android:grantUriPermissionssu"true"o se un determinato client soddisfa le condizioni di un sottoelemento<grant-uri-permission>, il client può ottenere l'accesso in scrittura temporaneo per modificare i dati del fornitore di contenuti.Vedi anche gli attributi
permissionereadPermission.
- introdotta in:
- Livello API 1
- Vedi anche:
- Fornitori di contenuti
<provider>
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 2026-07-03 UTC.
[null,null,["Ultimo aggiornamento 2026-07-03 UTC."],[],[]]