- 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: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>
- può contenere:
<meta-data>
<grant-uri-permission>
<intent-filter>
<path-permission>
- description:
-
Dichiara un componente del fornitore di contenuti. Un fornitore di contenuti è una sottoclasse
ContentProvider
che fornisce accesso strutturato ai dati gestiti dal un'applicazione. Tutti i fornitori di contenuti nella tua applicazione devono essere definiti in un Elemento<provider>
nel file manifest. In caso contrario, il sistema non ne è a conoscenza e non li esegue.Dichiara solo i fornitori di contenuti che fanno parte della tua applicazione. Non dichiarare i fornitori di contenuti in le altre applicazioni che utilizzi nella tua applicazione.
Il sistema Android archivia i riferimenti ai fornitori di contenuti in base a un'autorità che fa parte dell'URI dei contenuti del provider. Ad esempio, supponiamo che tu voglia accedere a un fornitore di contenuti che memorizzi informazioni sugli operatori sanitari. Da fare chiami il metodo
ContentResolver.query()
, che accetta un URI che, tra gli altri argomenti, identifica il provider:content://com.example.project.healthcareprovider/nurses/rn
Lo schema
content:
identifica l'URI come un URI dei contenuti che rimanda a un fornitore di contenuti Android. L'autoritàcom.example.project.healthcareprovider
identifica il provider stesso. La Il sistema Android cerca l'autorità nel suo elenco di fornitori noti e le relative autorità. La sottostringanurses/rn
è un percorso, utilizzato dal fornitore di contenuti per identificare sottoinsiemi di dati del fornitore.Quando definisci il provider nell'elemento
<provider>
, non includere lo schema o il percorso nell'argomentoandroid:name
, ma solo l'autorità competente.Per informazioni sull'utilizzo e sullo 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 nomi con un punto e virgola.
Per evitare conflitti, usa una convenzione di denominazione in stile Java per i nomi delle autorità,
ad esempio
com.example.provider.cartoonprovider
. In genere si tratta del nome della sottoclasseContentProvider
che implementa il providerNon esiste un valore predefinito. È necessario specificare almeno un'autorità.
android:enabled
- Se il sistema può creare un'istanza del fornitore di contenuti. È
"true"
se può esserlo e"false"
in caso contrario. Il valore predefinito è"true"
.L'elemento
<application>
ha il proprio Attributoenabled
che si applica a tutti componenti delle applicazioni, inclusi i fornitori di contenuti. La<application>
e<provider>
entrambi gli attributi devono essere"true"
, in quanto che per impostazione predefinita sono abilitati per il fornitore di contenuti. Se uno dei due è"false"
, il provider è disattivato. Non è possibile creare un'istanza. android:directBootAware
Se il fornitore di contenuti è a conoscenza di Direct Boot, ovvero se può essere eseguito prima che l'utente sblocchi il dispositivo.
Nota: durante Avvio diretto, un contenuto dell'applicazione può accedere soltanto ai dati archiviati spazio di archiviazione protetto dal dispositivo.
Il valore predefinito è
"false"
.android:exported
-
Se il fornitore di contenuti è disponibile per l'utilizzo di altre applicazioni.
-
"true"
: il provider è disponibile per altre applicazioni. Qualsiasi applicazione può utilizzare l'URI dei contenuti del provider per accedervi, in base alle autorizzazioni specificate il fornitore. -
"false"
: il provider non è disponibile per altre applicazioni. Impostaandroid:exported="false"
per limitare l'accesso al provider al tuo diverse applicazioni. Solo le applicazioni che hanno lo stesso ID utente (UID) del provider, oppure alle applicazioni a cui viene concesso temporaneamente l'accesso tramiteandroid:grantUriPermissions
vi abbiano accesso.
Poiché questo attributo è stato introdotto nel livello API 17, tutti i dispositivi con livello API 16 e livelli inferiori si comportano come se questo attributo fosse impostato su
"true"
. Se impostiandroid:targetSdkVersion
a 17 o superiore, il valore predefinito è"false"
per i dispositivi che eseguono l'API livello 17 e livelli successivi.Puoi impostare
android:exported="false"
e limitare comunque l'accesso a il provider impostando le autorizzazioni conpermission
. -
android:grantUriPermissions
- Se coloro che in genere non hanno l'autorizzazione
accedere ai dati del fornitore di contenuti
possono essere autorizzati a farlo,
il superamento temporaneo della restrizione imposta
readPermission
,writePermission
,permission
eexported
attributi.È
"true"
se è possibile concedere l'autorizzazione,"false"
in caso contrario. Se"true"
, l'autorizzazione può essere concessa per tutti i contenuti del fornitore. Se"false"
, l'autorizzazione può essere concessa solo ai sottoinsiemi di dati elencati<grant-uri-permission>
sottoelementi, se ce ne sono. Il valore predefinito è"false"
.La concessione dell'autorizzazione è un modo per assegnare una volta sola a un componente dell'applicazione l'accesso ai dati protetti da un'autorizzazione. Ad esempio, quando un'email contiene un allegato, l'applicazione di posta potrebbe chiamare il appropriato per aprirlo, anche se lo spettatore non ha informazioni l'autorizzazione a esaminare tutti i dati del fornitore di contenuti.
In questi casi, l'autorizzazione viene concessa
FLAG_GRANT_READ_URI_PERMISSION
eFLAG_GRANT_WRITE_URI_PERMISSION
nell'oggettoIntent
che attiva il componente. Ad esempio, l'applicazione di posta elettronica potrebbe inserireFLAG_GRANT_READ_URI_PERMISSION
Intent
passato aContext.startActivity()
. L'autorizzazione è specifica all'URI inIntent
.Se attivi questa funzionalità, imposta l'attributo su
"true"
oppure definendo<grant-uri-permission>
sottoelementi, richiamaContext.revokeUriPermission()
quando un URI coperto viene eliminato dal provider.Consulta anche:
<grant-uri-permission>
. android:icon
- Un'icona che rappresenta il fornitore di contenuti.
Questo attributo è impostato come riferimento a una risorsa drawable che contiene
la definizione dell'immagine. Se non è impostata, viene visualizzata l'icona specificata per l'applicazione
viene usato nel suo insieme. Per ulteriori informazioni, consulta il
<application>
attributoicon
dell'elemento. android:initOrder
- L'ordine in cui viene creata l'istanza del fornitore di contenuti, rispetto ad altri fornitori di contenuti ospitati dalla stessa procedura. In caso di dipendenze tra i fornitori di contenuti, l'impostazione di questo per ognuno di essi si assicura che siano creati nell'ordine come richiesto da queste dipendenze. Il valore è un numero intero, e i numeri più alti vengono inizializzati per primi.
android:label
- Un'etichetta leggibile per i contenuti forniti.
Se questo attributo non è impostato, l'etichetta impostata per l'applicazione nel suo complesso è
al suo posto. Per ulteriori informazioni, consulta la sezione
<application>
Attributolabel
.L'etichetta è in genere impostata come riferimento a una risorsa stringa, in modo che può essere localizzata come altre stringhe nell'interfaccia utente. Tuttavia, per comodità durante lo sviluppo dell'applicazione, può anche essere impostato come stringa non elaborata.
android:multiprocess
- Se l'app viene eseguita in più processi, questo attributo determina se
vengono create più istanze del fornitore di contenuti. Se
"true"
, ognuno dei processi dell'app ha il proprio oggetto fornitore di contenuti. Se"false"
, i processi dell'app condividono un solo oggetto del fornitore di contenuti. Il valore predefinito è"false"
.L'impostazione di questo flag su
"true"
può migliorare le prestazioni riducendo l'overhead della comunicazione tra processi, ma aumenta anche la memoria per ogni processo. android:name
- Il nome della classe che implementa il fornitore di contenuti, una sottoclasse
ContentProvider
. Di solito si tratta di un modello nome della classe, ad esempio"com.example.project.TransportationProvider"
. Tuttavia, come forma breve, se il primo carattere del nome è un punto, questa viene aggiunta al nome del pacchetto specificato Elemento<manifest>
.Non esiste un valore predefinito. È necessario specificare il nome.
android:permission
- Il nome di un'autorizzazione di cui i client devono disporre per leggere o scrivere il
i dati del fornitore di contenuti. Questo attributo è un modo pratico per impostare
un'unica autorizzazione
per la lettura e la scrittura. Tuttavia,
readPermission
, Gli attributiwritePermission
egrantUriPermissions
hanno la precedenza su questo.Se
readPermission
, controlla l'accesso per l'esecuzione di query al fornitore di contenuti. Se l'attributowritePermission
è impostato, controlla l'accesso per la modifica dei dati del provider.Per ulteriori informazioni sulle autorizzazioni, consulta Autorizzazioni nella panoramica del file manifest dell'app Suggerimenti per la sicurezza.
android:process
- Il nome del processo in cui viene eseguito il fornitore di contenuti. Generalmente,
tutti i componenti di un'applicazione vengono eseguiti nel processo predefinito creato
un'applicazione. Ha lo stesso nome del pacchetto dell'applicazione.
La Di
<application>
elementoprocess
può impostare un valore diverso predefinita per tutti i componenti. Ma ogni componente può sostituire il valore predefinito con il proprio attributoprocess
, che ti consente di diffondere un'applicazione in più processi.Se il nome assegnato a questo attributo inizia con i due punti (
:
), viene privato dell'applicazione, viene creato quando è necessario dell'attività durante questo processo.Se il nome del processo inizia con un carattere minuscolo, l'attività viene eseguita in un processo globale con questo nome, a condizione che sia autorizzato a farlo. Ciò consente ai componenti di applicazioni diverse di condividere un processo, e l'utilizzo delle risorse.
android:readPermission
Un'autorizzazione di cui i client devono disporre per inviare query al fornitore di contenuti.
Se il provider imposta
android:grantUriPermissions
a"true"
o se un determinato cliente soddisfa le condizioni di un<grant-uri-permission>
, il client può ottenere un accesso temporaneo in lettura ai contenuti del fornitore.Vedi anche i
permission
e AttributiwritePermission
.android:syncable
- Se i dati sotto il controllo del fornitore di contenuti
possono essere sincronizzati
con i dati su un server. Sono le ore
"true"
se può esserlo e"false"
in caso contrario. android:writePermission
Un'autorizzazione di cui i clienti hanno bisogno per apportare modifiche ai dati controllati dal fornitore di contenuti.
Se il provider imposta
android:grantUriPermissions
a"true"
o se un determinato cliente soddisfa le condizioni di un<grant-uri-permission>
, il client può ottenere l'accesso in scrittura temporaneo per modificare i contenuti del fornitore.Vedi anche i
permission
e AttributireadPermission
.
- introdotto in:
- Livello API 1
- vedi anche:
- Fornitori di contenuti
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 2024-08-22 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 2024-08-22 UTC."],[],[]]