- Syntax:
-
<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:intentMatchingFlags=["none" | "enforceIntentFilter" | "allowNullAction"] 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>
- Enthalten in:
-
<application> - kann Folgendes enthalten:
<meta-data><grant-uri-permission><intent-filter><path-permission><property>- Beschreibung:
-
Deklariert eine Contentanbieter-Komponente. Ein Contentanbieter ist eine Unterklasse von
ContentProvider, die strukturierten Zugriff auf Daten ermöglicht, die von der Anwendung verwaltet werden. Alle Contentanbieter in Ihrer Anwendung müssen in einem<provider>-Element in der Manifestdatei definiert werden. Andernfalls sind sie dem System nicht bekannt und werden nicht ausgeführt.Geben Sie nur Contentanbieter an, die Teil Ihrer Anwendung sind. Deklarieren Sie keine Contentanbieter in anderen Anwendungen, die Sie in Ihrer Anwendung verwenden.
Das Android-System speichert Verweise auf Contentanbieter anhand eines authority-Strings, der Teil des Content-URI des Anbieters ist. Angenommen, Sie möchten auf einen Inhaltsanbieter zugreifen, der Informationen zu medizinischen Fachkräften speichert. Rufen Sie dazu die Methode
ContentResolver.query()auf, die unter anderem einen URI akzeptiert, der den Anbieter identifiziert:content://com.example.project.healthcareprovider/nurses/rn
Das
content:-Schema kennzeichnet den URI als Content-URI, der auf einen Android-Contentanbieter verweist. Die Autoritätcom.example.project.healthcareprovideridentifiziert den Anbieter selbst. Das Android-System sucht in seiner Liste bekannter Anbieter und ihrer Berechtigungen nach der Berechtigung. Der Teilstringnurses/rnist ein Pfad, mit dem der Inhaltsanbieter Teilmengen der Anbieterdaten identifiziert.Wenn Sie Ihren Anbieter im
<provider>-Element definieren, geben Sie imandroid:name-Argument nicht das Schema oder den Pfad an, sondern nur die Autorität.Informationen zur Verwendung und Entwicklung von Contentanbietern finden Sie unter Contentanbieter.
- Attribute:
-
android:authorities-
Eine Liste mit einem oder mehreren URI-Autoritäten, die vom Contentanbieter angebotene Daten identifizieren.
Wenn Sie mehrere Behörden angeben möchten, trennen Sie die Namen durch ein Semikolon.
Um Konflikte zu vermeiden, verwenden Sie für Autoritätsnamen eine Namenskonvention im Java-Stil, z. B.
com.example.provider.cartoonprovider. In der Regel ist es der Name derContentProvider-Unterklasse, die den Anbieter implementiert.Es gibt keine Standardeinstellung. Es muss mindestens eine Behörde angegeben werden.
android:enabled- Gibt an, ob der Contentanbieter vom System instanziiert werden kann.
"true", wenn es möglich ist, und"false", wenn nicht. Der Standardwert ist"true".Das
<application>-Element hat ein eigenesenabled-Attribut, das für alle Anwendungskomponenten gilt, einschließlich Contentanbietern. Die Attribute<application>und<provider>müssen beide"true"sein, da sie standardmäßig beide"true"sind, damit der Content-Anbieter aktiviert wird. Wenn einer der beiden Werte"false"ist, ist der Anbieter deaktiviert. Sie kann nicht instanziiert werden. android:directBootAwareGibt an, ob der Contentanbieter Direct-Boot-fähig ist, d. h., ob er ausgeführt werden kann, bevor der Nutzer das Gerät entsperrt.
Hinweis : Während des Direktstarts kann ein Contentanbieter in Ihrer Anwendung nur auf die Daten zugreifen, die im geräteschutzgesicherten Speicher gespeichert sind.
Der Standardwert ist
"false".android:exported-
Gibt an, ob der Contentanbieter für andere Anwendungen verfügbar ist.
-
"true": Der Anbieter ist für andere Anwendungen verfügbar. Jede Anwendung kann über den Content-URI des Anbieters auf die Inhalte zugreifen, sofern die für den Anbieter angegebenen Berechtigungen dies zulassen. -
"false": Der Anbieter ist für andere Anwendungen nicht verfügbar. Legen Sieandroid:exported="false"fest, um den Zugriff auf den Anbieter auf Ihre Anwendungen zu beschränken. Nur Anwendungen, die dieselbe Nutzer-ID (UID) wie der Anbieter haben, oder Anwendungen, denen über das Elementandroid:grantUriPermissionsvorübergehend Zugriff auf den Anbieter gewährt wird, haben Zugriff darauf.
Da dieses Attribut in API‑Level 17 eingeführt wurde, verhalten sich alle Geräte mit API‑Level 16 und niedriger so, als wäre dieses Attribut auf
"true"festgelegt. Wenn Sieandroid:targetSdkVersionauf 17 oder höher festlegen, ist der Standardwert"false"für Geräte mit API-Level 17 und höher.Sie können
android:exported="false"festlegen und den Zugriff auf Ihren Anbieter trotzdem einschränken, indem Sie Berechtigungen mit dem Attributpermissionfestlegen. -
android:grantUriPermissionsOb Personen, die normalerweise nicht berechtigt sind, auf die Daten des Content-Anbieters zuzugreifen, die Berechtigung dazu erhalten können, wodurch die Einschränkung durch die Attribute
readPermission,writePermission,permissionundexportedvorübergehend aufgehoben wird.Der Wert ist
"true", wenn die Berechtigung erteilt werden kann, und"false", wenn nicht. Bei"true"kann die Berechtigung für alle Daten des Content-Anbieters erteilt werden. Wenn"false", kann die Berechtigung nur für die in<grant-uri-permission>-Unterelementen aufgeführten Datenteilmengen erteilt werden, sofern vorhanden. Der Standardwert ist"false".Wenn Sie eine Berechtigung erteilen, gewähren Sie einer Anwendungskomponente einmaligen Zugriff auf Daten, die durch eine Berechtigung geschützt sind. Wenn eine E‑Mail beispielsweise einen Anhang enthält, ruft die E‑Mail-Anwendung möglicherweise den entsprechenden Viewer auf, um ihn zu öffnen, obwohl der Viewer keine allgemeine Berechtigung hat, alle Daten des Content-Anbieters anzusehen.
In solchen Fällen wird die Berechtigung durch die Flags
FLAG_GRANT_READ_URI_PERMISSIONundFLAG_GRANT_WRITE_URI_PERMISSIONimIntent-Objekt gewährt, mit denen die Komponente aktiviert wird. Die E‑Mail-Anwendung kann beispielsweiseFLAG_GRANT_READ_URI_PERMISSIONin denIntent-Parameter einfügen, der anContext.startActivity()übergeben wird. Die Berechtigung gilt nur für den URI in derIntent.Wenn Sie diese Funktion aktivieren, indem Sie entweder dieses Attribut auf
"true"setzen oder<grant-uri-permission>-Unterelemente definieren, rufen SieContext.revokeUriPermission()auf, wenn eine abgedeckte URI aus dem Anbieter gelöscht wird.Weitere Informationen finden Sie unter dem
<grant-uri-permission>-Element.android:icon- Ein Symbol, das den Content-Anbieter darstellt.
Dieses Attribut wird als Referenz auf eine zeichenfähige Ressource festgelegt, die die Bilddefinition enthält. Wenn es nicht festgelegt ist, wird stattdessen das für die Anwendung als Ganzes angegebene Symbol verwendet. Weitere Informationen finden Sie im
<application>-Element unter dem Attributicon. android:initOrder- Die Reihenfolge, in der der Contentanbieter im Verhältnis zu anderen Contentanbietern, die vom selben Prozess gehostet werden, instanziiert wird. Wenn Abhängigkeiten zwischen Content-Anbietern bestehen, wird durch Festlegen dieses Attributs für jeden von ihnen sichergestellt, dass sie in der Reihenfolge erstellt werden, die für diese Abhängigkeiten erforderlich ist. Der Wert ist eine Ganzzahl. Höhere Zahlen werden zuerst initialisiert.
android:intentMatchingFlags-
Mit diesem Attribut können Sie genauer festlegen, wie das System eingehende Intents mit App-Komponenten abgleicht. Standardmäßig werden keine speziellen Abgleichsregeln angewendet.
Der für ein
<provider>-Tag festgelegte Wert überschreibt den für das<application>-Tag festgelegten Wert.Der Wert muss einer oder mehrere der folgenden Flags sein, die durch „
|“ getrennt sind:Flag Beschreibung noneDeaktiviert alle speziellen Abgleichsregeln für eingehende Intents. Wenn Sie mehrere Flags angeben, werden widersprüchliche Werte aufgelöst, indem dem Flag noneVorrang eingeräumt wird.enforceIntentFilterErzwingt einen strengeren Abgleich für eingehende Intents:
- Explizite Intents müssen mit dem Intent-Filter der Zielkomponente übereinstimmen.
- Intents ohne Aktion entsprechen keinem Intent-Filter.
allowNullActionDie Abgleichsregeln werden gelockert, sodass auch Intents ohne Aktion abgeglichen werden können. Dieses Flag wird in Verbindung mit
enforceIntentFilterverwendet, um das folgende Verhalten zu erzielen:- Explizite Intents müssen mit dem Intent-Filter der Zielkomponente übereinstimmen.
- Intents ohne Aktion dürfen mit jedem Intent-Filter übereinstimmen.
Weitere Informationen finden Sie im Abschnitt Safer Intents (Sicherere Intents) unter „Verhaltensänderungen in Android 16 (API-Level 36)“.
android:label- Ein für Nutzer lesbares Label für die bereitgestellten Inhalte.
Wenn dieses Attribut nicht festgelegt ist, wird stattdessen das für die Anwendung als Ganzes festgelegte Label verwendet. Weitere Informationen finden Sie im
label-Attribut des<application>-Elements.Das Label wird in der Regel als Verweis auf eine String-Ressource festgelegt, damit es wie andere Strings in der Benutzeroberfläche lokalisiert werden kann. Während Sie die Anwendung entwickeln, kann sie jedoch auch als Raw-String festgelegt werden.
android:multiprocess- Wenn die App in mehreren Prozessen ausgeführt wird, bestimmt dieses Attribut, ob mehrere Instanzen des Contentanbieters erstellt werden. Wenn
"true", hat jeder Prozess der App ein eigenes Contentanbieter-Objekt. Wenn"false", verwenden die Prozesse der App nur ein Contentanbieter-Objekt. Der Standardwert ist"false".Wenn Sie dieses Flag auf
"true"setzen, kann die Leistung verbessert werden, da der Overhead der Interprozesskommunikation verringert wird. Allerdings wird dadurch auch der Speicherbedarf der einzelnen Prozesse erhöht. android:name- Der Name der Klasse, die den Contentanbieter implementiert, eine Unterklasse von
ContentProvider. Dies ist in der Regel ein vollständig qualifizierter Klassenname, z. B."com.example.project.TransportationProvider". Wenn das erste Zeichen des Namens ein Punkt ist, wird es an den im<manifest>-Element angegebenen Paketnamen angehängt.Es gibt keine Standardeinstellung. Der Name muss angegeben werden.
android:permissionDer Name einer Berechtigung, die Clients zum Lesen oder Schreiben der Daten des Contentanbieters benötigen. Mit diesem Attribut können Sie eine einzelne Berechtigung für Lese- und Schreibvorgänge festlegen. Die Attribute
readPermission,writePermissionundgrantUriPermissionshaben jedoch Vorrang.Wenn das Attribut
readPermissionebenfalls festgelegt ist, wird damit der Zugriff für das Abfragen des Content-Anbieters gesteuert. Wenn das AttributwritePermissionfestgelegt ist, wird der Zugriff zum Ändern der Daten des Anbieters gesteuert.Weitere Informationen zu Berechtigungen finden Sie im Abschnitt Berechtigungen in der Übersicht zum App-Manifest und unter Sicherheitstipps.
android:processDer Name des Prozesses, in dem der Contentanbieter ausgeführt wird. Normalerweise werden alle Komponenten einer Anwendung im Standardprozess ausgeführt, der für die Anwendung erstellt wurde. Er hat denselben Namen wie das Anwendungspaket.
Mit dem Attribut
processdes Elements<application>kann ein anderer Standardwert für alle Komponenten festgelegt werden. Jede Komponente kann den Standardwert jedoch mit ihrem eigenenprocess-Attribut überschreiben, sodass Sie Ihre Anwendung auf mehrere Prozesse verteilen können.Wenn der Name, der diesem Attribut zugewiesen ist, mit einem Doppelpunkt (
:) beginnt, wird bei Bedarf ein neuer Prozess erstellt, der für die Anwendung privat ist, und die Aktivität wird in diesem Prozess ausgeführt.Wenn der Prozessname mit einem Kleinbuchstaben beginnt, wird die Aktivität in einem globalen Prozess mit diesem Namen ausgeführt, sofern sie die entsprechende Berechtigung hat. So können Komponenten in verschiedenen Anwendungen einen Prozess gemeinsam nutzen, was den Ressourcenverbrauch verringert.
android:readPermissionEine Berechtigung, die Clients benötigen, um den Contentanbieter abzufragen.
Wenn der Anbieter
android:grantUriPermissionsauf"true"setzt oder ein bestimmter Client die Bedingungen eines<grant-uri-permission>-Unterelements erfüllt, kann der Client vorübergehenden Lesezugriff auf die Daten des Contentanbieters erhalten.Siehe auch die Attribute
permissionundwritePermission.android:syncable- Gibt an, ob die Daten, die vom Contentanbieter kontrolliert werden, mit Daten auf einem Server synchronisiert werden können.
"true", wenn das möglich ist, und"false", wenn nicht. android:writePermissionEine Berechtigung, die Clients benötigen, um Änderungen an den Daten vorzunehmen, die vom Content-Anbieter kontrolliert werden.
Wenn der Anbieter
android:grantUriPermissionsauf"true"setzt oder ein bestimmter Client die Bedingungen eines<grant-uri-permission>-Unterelements erfüllt, kann der Client vorübergehenden Schreibzugriff erhalten, um die Daten des Contentanbieters zu ändern.Siehe auch die Attribute
permissionundreadPermission.
- Eingeführt in:
- API‑Level 1
- Siehe auch:
- Contentanbieter
<provider>
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2026-07-03 (UTC).
[null,null,["Zuletzt aktualisiert: 2026-07-03 (UTC)."],[],[]]