Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
An einer ContentProvider
-Interaktion sind zwei Klassen beteiligt:
ContentProvider – Implementiert eine API, die eine Reihe von Daten standardmäßig verfügbar macht. Die wichtigsten Methoden sind Query, Insert, Update und Delete.
ContentResolver – Ein statischer Proxy, der mit einem
ContentProvider
Proxy kommuniziert, um auf seine Daten zuzugreifen, entweder innerhalb derselben Anwendung oder aus einer anderen Anwendung.
Ein Inhaltsanbieter wird in der Regel durch eine SQLite-Datenbank unterstützt, durch die API muss der nutzende Code den zugrunde liegenden SQL-Code jedoch nicht kennen. Abfragen über einen URI verwenden Konstanten zum Verweisen auf Spaltennamen (um die Abhängigkeiten in der zugrunde liegenden Datenstruktur zu reduzieren), und es wird ein ICursor
zurückgegeben, den der nutzende Code durchlaufen kann.
Nutzen eines ContentProvider
ContentProviders
machen ihre Funktionalität über einen URI verfügbar, der in der AndroidManifest.xml-Datei der Anwendung registriert ist, die die Daten veröffentlicht. Es gibt eine Konvention, der zufolge der URI und die Datenspalten als Konstanten verfügbar gemacht werden sollten, um die Bindung an die Daten zu vereinfachen. Alle integrierten ContentProviders
von Android stellen Hilfsklassen mit Konstanten bereit, die auf die Datenstruktur im Namespace Android.Providers
verweisen.
Integrierte Anbieter
Android bietet über ContentProviders
Zugriff auf eine umfassende Palette an System- und Benutzerdaten:
Browser – Lesezeichen und Browserverlauf (erfordert Berechtigung
READ_HISTORY_BOOKMARKS
und/oderWRITE_HISTORY_BOOKMARKS
).CallLog – zuletzt getätigte oder empfangene Anrufe mit dem Gerät.
Kontakte – detaillierte Informationen aus der Kontaktliste des Benutzers, einschließlich Personen, Telefonen, Fotos und Gruppen.
MediaStore – Inhalte des Geräts des Benutzers: Audio (Alben, Künstler, Genres, Wiedergabelisten), Bilder (einschließlich Miniaturansichten) und Video.
Einstellungen – systemweite Geräteeinstellungen und -einstellungen.
UserDictionary – Inhalt des benutzerdefinierten Wörterbuchs, das für die Vorhersage von Texteingaben verwendet wird.
Voicemail – Verlauf von Voicemailnachrichten.
Übersicht über Klassen
Im Folgenden finden Sie die wichtigsten Klassen für die Arbeit mit einem ContentProvider
:
In diesem Diagramm implementiert der ContentProvider
Abfragen und registriert URIs, die andere Anwendungen zum Auffinden von Daten verwenden. Der ContentResolver
fungiert als „Proxy“ zum ContentProvider
(Methoden: „Query“, „Insert“, „Update“ und „Delete“). Der SQLiteOpenHelper
enthält Daten, die vom ContentProvider
verwendet werden, ist für nutzende Apps aber nicht direkt verfügbar.
Der CursorAdapter
übergibt den vom ContentResolver
zurückgegebenen Cursor, um Inhalte in einer ListView
anzuzeigen. Der UriMatcher
ist eine Hilfsklasse, die bei der Verarbeitung von Abfragen URIs analysiert.
Im Folgenden wird der Zweck der einzelnen Klassen beschrieben:
ContentProvider – Implementieren Sie die Methoden dieser abstrakten Klasse, um Daten verfügbar zu machen. Die API wird über das URI-Attribut, das der Klassendefinition hinzugefügt wird, für andere Klassen und Anwendungen zur Verfügung gestellt.
SQLiteOpenHelper – Unterstützt die Implementierung des SQLite-Datenspeichers, der von der
ContentProvider
.UriMatcher – Verwenden Sie
UriMatcher
in IhrerContentProvider
Implementierung, um URIs zu verwalten, die zum Abfragen des Inhalts verwendet werden.ContentResolver – Der Verbrauch von Code verwendet einen
ContentResolver
, um auf eineContentProvider
Instanz zuzugreifen. Diese beiden Klassen verarbeiten zusammen die Kommunikation zwischen den Prozessen, sodass Daten einfacher von mehreren Anwendungen gemeinsam genutzt werden können. Der nutzende Code erstellt niemals explizit eineContentProvider
-Klasse; stattdessen erfolgt der Datenzugriff durch die Erstellung eines Cursors basierend auf einem URI, der von derContentProvider
-Anwendung verfügbar gemacht wird.CursorAdapter – Verwenden
CursorAdapter
oderSimpleCursorAdapter
anzeigen von Daten, auf die über einContentProvider
.
Über die ContentProvider
-API können Consumer eine Vielzahl von Vorgängen mit den Daten ausführen, wie z. B. die folgenden:
- Abfragen von Daten für die Rückgabe von Listen oder einzelnen Datensätzen
- Ändern von einzelnen Datensätzen
- Hinzufügen von neuen Datensätzen
- Löschen von Datensätzen
Dieses Dokument enthält ein Beispiel, das einen systemseitig bereitgestellten ContentProvider
verwendet, sowie ein einfaches, schreibgeschütztes Beispiel, das einen benutzerdefinierten ContentProvider
implementiert.