Contentanbieter können Apps dabei helfen, den Zugriff auf Daten zu verwalten, die selbst oder von anderen Apps gespeichert wurden. Außerdem bieten sie die Möglichkeit, Daten mit anderen Apps zu teilen. Sie kapseln die Daten und bieten Mechanismen zur Definition der Datensicherheit. Contentanbieter sind die Standardschnittstelle, die Daten in einem Prozess mit Code verbindet, der in einem anderen Prozess ausgeführt wird.
Die Implementierung eines Contentanbieters bietet viele Vorteile. Vor allem können Sie einen Contentanbieter so konfigurieren, dass andere Anwendungen sicher auf Ihre App-Daten zugreifen und diese ändern können, wie in Abbildung 1 dargestellt.
![Übersichtsdiagramm dazu, wie Contentanbieter den Zugriff auf den Speicher verwalten.](https://developer.android.com/static/guide/topics/providers/images/content-provider-overview.png?authuser=6&hl=de)
Abbildung 1: Übersichtsdiagramm dazu, wie Contentanbieter den Zugriff auf den Speicher verwalten.
Verwenden Sie Contentanbieter, wenn Sie Daten freigeben möchten. Wenn Sie keine Daten freigeben möchten, müssen Sie sie nicht verwenden. Möglicherweise bieten sie aber eine Abstraktion, mit der Sie Änderungen an der Implementierung des Anwendungsdatenspeichers vornehmen können, ohne andere Anwendungen zu beeinträchtigen, die Zugriff auf Ihre Daten benötigen.
In diesem Szenario ist nur Ihr Contentanbieter betroffen und nicht die Anwendungen, die darauf zugreifen. Sie können beispielsweise eine SQLite-Datenbank gegen einen alternativen Speicher austauschen, wie in Abbildung 2 dargestellt.
![Abbildung der Migration des Speichers des Contentanbieters](https://developer.android.com/static/guide/topics/providers/images/content-provider-migration.png?authuser=6&hl=de)
Abbildung 2: Abbildung der Migration des Speichers des Contentanbieters
Für einige andere Klassen ist die ContentProvider
-Klasse erforderlich:
Wenn Sie eine dieser Klassen verwenden, müssen Sie einen Inhaltsanbieter in Ihrer Anwendung implementieren. Wenn Sie mit dem Sync Adapter-Framework arbeiten, können Sie alternativ auch einen Stub-Inhaltsanbieter erstellen. Weitere Informationen finden Sie unter Stub-Inhaltsanbieter erstellen. In den folgenden Fällen benötigen Sie außerdem Ihren eigenen Contentanbieter:
- Zum Implementieren benutzerdefinierter Suchvorschläge in Ihrer App
- So stellen Sie Ihre Anwendungsdaten Widgets bereit.
- Zum Kopieren und Einfügen komplexer Daten oder Dateien aus Ihrer Anwendung in andere Anwendungen.
Das Android-Framework umfasst Contentanbieter, die Daten wie Audio, Video, Bilder und personenbezogene Kontaktdaten verwalten. Einige davon finden Sie in der Referenzdokumentation zum Paket android.provider
. Diese Anbieter sind mit einigen Einschränkungen für alle Android-Apps zugänglich.
Mit einem Contentanbieter lässt sich der Zugriff auf verschiedene Datenspeicherquellen verwalten, einschließlich strukturierter Daten, z. B. einer relationalen SQLite-Datenbank, oder unstrukturierter Daten wie Bilddateien. Weitere Informationen zu den unter Android verfügbaren Speichertypen finden Sie unter Daten- und Dateispeicher – Übersicht und Designdatenspeicher.
Vorteile von Contentanbietern
Contentanbieter bieten detaillierte Kontrolle über die Berechtigungen für den Zugriff auf Daten. Sie können den Zugriff auf einen Contentanbieter innerhalb Ihrer Anwendung beschränken, pauschale Berechtigung für den Zugriff auf Daten aus anderen Anwendungen gewähren oder verschiedene Berechtigungen zum Lesen und Schreiben von Daten konfigurieren. Weitere Informationen zur sicheren Verwendung von Contentanbietern finden Sie in den Sicherheitstipps zur Datenspeicherung und in den Berechtigungen für Contentanbieter.
Sie können einen Contentanbieter verwenden, um die Details für den Zugriff auf verschiedene Datenquellen in Ihrer Anwendung zu abstrahieren. Ihre Anwendung kann beispielsweise strukturierte Datensätze in einer SQLite-Datenbank sowie Video- und Audiodateien speichern. Sie können einen Contentanbieter verwenden, um auf alle diese Daten zuzugreifen.
Außerdem sind CursorLoader
-Objekte auf Contentanbieter angewiesen, um asynchrone Abfragen auszuführen und die Ergebnisse dann an die UI-Ebene Ihrer Anwendung zurückzugeben. Weitere Informationen zur Verwendung eines CursorLoader
zum Laden von Daten im Hintergrund finden Sie unter
Ladeprogramme.
In den folgenden Themen werden Contentanbieter ausführlicher beschrieben:
- Grundlagen zu Contentanbietern
- Daten mit einem vorhandenen Contentanbieter aufrufen und aktualisieren
- Contentanbieter erstellen
- Einen eigenen Contentanbieter entwerfen und implementieren
- Kalenderanbieter – Übersicht
- Informationen zum Zugreifen auf den Kalenderanbieter der Android-Plattform.
- Kontaktanbieter
- Informationen zum Zugreifen auf den Contacts Provider der Android-Plattform.