I fornitori di contenuti possono aiutare un'applicazione a gestire l'accesso ai dati archiviati da sola o da altre app e fornire un modo per condividere dati con altre app. Incapsulano i dati e forniscono meccanismi per definirne la sicurezza. I fornitori di contenuti sono l'interfaccia standard che collega i dati in un processo con il codice eseguito in un altro processo.
L'implementazione di un fornitore di contenuti presenta molti vantaggi. Soprattutto, puoi configurare un fornitore di contenuti per consentire ad altre applicazioni di accedere e modificare in modo sicuro i dati dell'app, come illustrato nella Figura 1.
![Diagramma panoramica di come i fornitori di contenuti gestiscono l'accesso allo spazio di archiviazione.](https://developer.android.com/static/guide/topics/providers/images/content-provider-overview.png?authuser=8&hl=it)
Figura 1. Diagramma panoramica di come i fornitori di contenuti gestiscono l'accesso allo spazio di archiviazione.
Ricorri ai fornitori di contenuti se hai intenzione di condividere dati. Se non prevedi di condividere i dati, non è necessario utilizzarli, ma puoi scegliere di farlo perché forniscono un'astrazione che ti consente di apportare modifiche all'implementazione dello spazio di archiviazione dei dati dell'applicazione senza influire su altre applicazioni che si basano sull'accesso ai tuoi dati.
In questo scenario, solo il provider di contenuti è interessato e non le applicazioni che vi accedono. Ad esempio, puoi sostituire un database SQLite con uno spazio di archiviazione alternativo, come mostrato nella Figura 2.
![Illustrazione della migrazione dello spazio di archiviazione del fornitore di contenuti.](https://developer.android.com/static/guide/topics/providers/images/content-provider-migration.png?authuser=8&hl=it)
Figura 2. Illustrazione della migrazione dello spazio di archiviazione del fornitore di contenuti.
Alcune altre classi si basano sulla classe ContentProvider
:
Se utilizzi una di queste classi, devi implementare un fornitore di contenuti nell'applicazione. Quando lavori con il framework dell'adattatore di sincronizzazione, puoi anche creare un fornitore di contenuti stub come alternativa. Per maggiori informazioni, consulta Creare un provider di contenuti stub. Inoltre, è necessario disporre di un fornitore di contenuti nei seguenti casi:
- Per implementare i suggerimenti di ricerca personalizzati nella tua applicazione.
- Per esporre i dati dell'applicazione ai widget.
- Per copiare e incollare dati o file complessi dalla tua applicazione ad altre applicazioni.
Il framework Android include fornitori di contenuti che gestiscono dati quali audio, video, immagini e informazioni di contatto personali. Puoi vederne alcuni elencati nella documentazione di riferimento per il pacchetto android.provider
. Con alcune limitazioni, questi provider sono accessibili a qualsiasi app
Android.
Un provider di contenuti può essere utilizzato per gestire l'accesso a una varietà di origini di archiviazione dati, inclusi dati strutturati, come un database relazionale SQLite, o dati non strutturati come file immagine. Per ulteriori informazioni sui tipi di archiviazione disponibili su Android, consulta le pagine Panoramica dell'archiviazione di dati e file e Archiviazione di dati di progettazione.
Vantaggi dei fornitori di contenuti
I fornitori di contenuti offrono un controllo granulare sulle autorizzazioni di accesso ai dati. Puoi scegliere di limitare l'accesso solo a un fornitore di contenuti all'interno della tua applicazione, concedere l'autorizzazione generale ad accedere ai dati di altre applicazioni o configurare diverse autorizzazioni per la lettura e la scrittura di dati. Per ulteriori informazioni sull'utilizzo sicuro dei fornitori di contenuti, consulta i suggerimenti sulla sicurezza per l'archiviazione dei dati e le Autorizzazioni per i fornitori di contenuti.
Puoi utilizzare un fornitore di contenuti per astrarre i dettagli necessari per accedere a diverse origini dati nella tua applicazione. Ad esempio, la tua applicazione potrebbe archiviare record strutturati, oltre a file video e audio, in un database SQLite. Puoi utilizzare un fornitore di contenuti per accedere a tutti questi dati.
Inoltre, gli oggetti CursorLoader
si basano sui fornitori di contenuti per eseguire
query asincrone e poi restituire i risultati al livello UI della tua applicazione. Per ulteriori
informazioni sull'utilizzo di un elemento CursorLoader
per caricare i dati in background, consulta
Caricatori.
I seguenti argomenti descrivono i fornitori di contenuti in modo più dettagliato:
- Informazioni di base sui fornitori di contenuti
- Come accedere ai dati e aggiornarli utilizzando un fornitore di contenuti esistente.
- Crea un fornitore di contenuti
- Come progettare e implementare il tuo fornitore di contenuti.
- Panoramica del fornitore di calendari
- Come accedere al fornitore di calendari che fa parte della piattaforma Android.
- Provider di contatti
- Come accedere al fornitore di contatti che fa parte della piattaforma Android.