<provider>

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 sottostringa nurses/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'argomento android: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 sottoclasse ContentProvider che implementa il provider

Non 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 Attributo enabled 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. Imposta android: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 tramite android: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 imposti android: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 con permission .

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 e exported 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 e FLAG_GRANT_WRITE_URI_PERMISSION nell'oggetto Intent che attiva il componente. Ad esempio, l'applicazione di posta elettronica potrebbe inserire FLAG_GRANT_READ_URI_PERMISSION Intent passato a Context.startActivity(). L'autorizzazione è specifica all'URI in Intent.

Se attivi questa funzionalità, imposta l'attributo su "true" oppure definendo <grant-uri-permission> sottoelementi, richiama Context.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> attributo icon 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> Attributo label.

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 attributi writePermission e grantUriPermissions hanno la precedenza su questo.

Se readPermission , controlla l'accesso per l'esecuzione di query al fornitore di contenuti. Se l'attributo writePermission è 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> elemento process può impostare un valore diverso predefinita per tutti i componenti. Ma ogni componente può sostituire il valore predefinito con il proprio attributo process, 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 Attributi writePermission.

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 Attributi readPermission.

introdotto in:
Livello API 1
vedi anche:
Fornitori di contenuti