Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Esistono due classi coinvolte in un'interazione ContentProvider
:
ContentProvider : implementa un'API che espone un set di dati in modo standard. I metodi principali sono Query, Insert, Update ed Delete.
ContentResolver : proxy statico che comunica con un
ContentProvider
oggetto per accedere ai dati, dall'interno della stessa applicazione o da un'altra applicazione.
Un provider di contenuti è in genere supportato da un database SQLite, ma l'API significa che l'utilizzo del codice non deve conoscere nulla sul database SQL sottostante. Le query vengono eseguite tramite un URI usando costanti per fare riferimento ai nomi di colonna (per ridurre le dipendenze dalla struttura dei dati sottostanti) e viene restituito un ICursor
oggetto per l'iterazione del codice di utilizzo.
Utilizzo di un contentProvider
ContentProviders
esporre la funzionalità tramite un URI registrato nella AndroidManifest.xml dell'applicazione che pubblica i dati. Esiste una convenzione in cui l'URI e le colonne di dati esposte devono essere disponibili come costanti per semplificare l'associazione ai dati. Tutte le classi predefinite di ContentProviders
Android offrono costanti che fanno riferimento alla struttura dei dati nello spazio dei Android.Providers
nomi.
Provider predefiniti
Android offre l'accesso a un'ampia gamma di dati di sistema e utente usando ContentProviders
:
Browser : segnalibri e cronologia del browser (richiede l'autorizzazione
READ_HISTORY_BOOKMARKS
e/oWRITE_HISTORY_BOOKMARKS
).CallLog : chiamate recenti effettuate o ricevute con il dispositivo.
Contatti : informazioni dettagliate dall'elenco contatti dell'utente, tra cui persone, telefoni, foto e gruppi.
MediaStore : contenuti del dispositivo dell'utente: audio (album, artisti, generi, playlist), immagini (incluse le anteprime) e video.
Impostazioni: impostazioni e preferenze del dispositivo a livello di sistema.
UserDictionary : contenuto del dizionario definito dall'utente usato per l'input di testo predittivo.
Segreteria telefonica : cronologia dei messaggi vocali.
Cenni preliminari sulle classi
Le classi primarie usate quando si lavora con un ContentProvider
sono illustrate di seguito:
In questo diagramma implementa ContentProvider
query e registra l'URI usato da altre applicazioni per individuare i dati. funge ContentResolver
da "proxy" per i ContentProvider
metodi (metodi Query, Insert, Update e Delete). SQLiteOpenHelper
Contiene i dati usati da ContentProvider
, ma non sono esposti direttamente all'utilizzo delle app.
Passa CursorAdapter
il cursore restituito dall'oggetto ContentResolver
da visualizzare in un oggetto ListView
. UriMatcher
è una classe helper che analizza gli URI durante l'elaborazione delle query.
Lo scopo di ogni classe è descritto di seguito:
ContentProvider : implementare i metodi di questa classe astratta per esporre i dati. L'API viene resa disponibile per altre classi e applicazioni tramite l'attributo Uri aggiunto alla definizione della classe.
SQLiteOpenHelper : consente di implementare l'archivio dati SQLite esposto da
ContentProvider
.UriMatcher : usare
UriMatcher
nell'implementazioneContentProvider
per gestire gli URI usati per eseguire query sul contenuto.ContentResolver : l'utilizzo del codice usa un
ContentResolver
oggetto per accedere a un'istanzaContentProvider
di . Le due classi si occupano insieme dei problemi di comunicazione tra processi, consentendo la condivisione dei dati tra le applicazioni. L'utilizzo di codice non crea mai unaContentProvider
classe esplicita. I dati vengono invece accessibili creando un cursore basato su un URI esposto dall'applicazioneContentProvider
.CursorAdapter : usare
CursorAdapter
oSimpleCursorAdapter
per visualizzare i dati a cui si accede tramite un oggettoContentProvider
.
L'API ContentProvider
consente ai consumer di eseguire un'ampia gamma di operazioni sui dati, ad esempio:
- Eseguire query sui dati per restituire elenchi o singoli record.
- Modificare i singoli record.
- Aggiungere nuovi record.
- Eliminare i record.
Questo documento contiene un esempio che usa un oggetto fornito dal ContentProvider
sistema, nonché un semplice esempio di sola lettura che implementa un oggetto personalizzato ContentProvider
.