- 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: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>
- description:
-
Deklariert eine Contentanbieter-Komponente. Ein Contentanbieter ist eine abgeleitete Klasse von
ContentProvider
, die strukturierten Zugriff auf von der Anwendung verwaltete Daten ermöglicht. Alle Contentanbieter in deiner App müssen in der Manifestdatei in einem<provider>
-Element definiert sein. Andernfalls werden sie vom System nicht erkannt und nicht ausgeführt.Geben Sie nur Contentanbieter an, die Teil Ihrer App sind. Gib keine Inhaltsanbieter in anderen Anwendungen an, die du in deiner Anwendung nutzt.
Das Android-System speichert Verweise auf Contentanbieter gemäß einem authority-String, der Teil des Inhalts-URI des Anbieters ist. Angenommen, Sie möchten auf einen Contentanbieter zugreifen, der Informationen zu medizinischen Fachkräften speichert. Dazu rufen Sie die Methode
ContentResolver.query()
auf, die unter anderem einen URI nimmt, der den Anbieter identifiziert:content://com.example.project.healthcareprovider/nurses/rn
Das Schema
content:
identifiziert den URI als Inhalts-URI, der auf einen Android-Inhaltsanbieter verweist. Die Zertifizierungsstellecom.example.project.healthcareprovider
identifiziert den Anbieter selbst. Das Android-System sucht in der Liste der bekannten Anbieter und ihrer Behörden nach der Behörde. Der Teilstringnurses/rn
ist ein Pfad, mit dem der Contentanbieter Teilmengen der Anbieterdaten identifiziert.Wenn Sie Ihren Anbieter im Element
<provider>
definieren, fügen Sie nicht das Schema oder den Pfad in das Argumentandroid:name
ein, sondern nur die Zertifizierungsstelle.Informationen zur Verwendung und Entwicklung von Contentanbietern finden Sie unter Contentanbieter.
- Attribute:
-
android:authorities
-
Eine Liste mit einer oder mehreren URI-Behörden, die vom Contentanbieter bereitgestellte Daten identifizieren.
Sie können mehrere Zertifizierungsstellen auflisten, indem Sie ihre Namen durch ein Semikolon trennen.
Verwenden Sie zur Vermeidung von Konflikten eine Namenskonvention im Java-Stil für Autorisierungsnamen, z. B.
com.example.provider.cartoonprovider
. In der Regel ist dies der Name der abgeleiteten KlasseContentProvider
, mit der der Anbieter implementiert wird.Es gibt keine Standardeinstellung. Es muss mindestens eine Behörde angegeben werden.
android:enabled
- Gibt an, ob der Contentanbieter vom System instanziiert werden kann. Es ist
"true"
, wenn dies möglich ist, und"false"
, wenn nicht. Der Standardwert ist"true"
.Das
<application>
-Element hat ein eigenesenabled
-Attribut, das für alle Anwendungskomponenten einschließlich Contentanbieter gilt. Die Attribute<application>
und<provider>
müssen beide standardmäßig"true"
sein, damit der Inhaltsanbieter aktiviert werden kann. Wenn einer der beiden Werte"false"
ist, ist der Anbieter deaktiviert. Er kann nicht instanziiert werden. android:directBootAware
Ob der Contentanbieter Direct-Boot-Aware ist, d. h. ob er ausgeführt werden kann, bevor der Nutzer das Gerät entsperrt.
Hinweis : Während des direkten Starts kann ein Contentanbieter Ihrer Anwendung nur auf die Daten zugreifen, die im gerätegeschützten 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 App kann den Inhalts-URI des Anbieters für den Zugriff verwenden, vorausgesetzt, dass die für den Anbieter festgelegten Berechtigungen gelten. -
"false"
: Der Anbieter ist für andere Anwendungen nicht verfügbar. Legen Sieandroid:exported="false"
fest, um den Zugriff auf Ihre Anwendungen auf den Anbieter zu beschränken. Nur Anwendungen mit derselben Nutzer-ID (UID) wie der Anbieter oder Anwendungen, denen über das Elementandroid:grantUriPermissions
vorü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, auf denen API-Level 16 und niedriger ausgeführt wird, so, als wäre dieses Attribut auf
"true"
festgelegt. Wenn Sieandroid:targetSdkVersion
auf 17 oder höher setzen, ist der Standardwert für Geräte mit API-Level 17 oder höher der Standardwert"false"
.Sie können
android:exported="false"
festlegen und trotzdem den Zugriff auf Ihren Anbieter beschränken. Dazu legen Sie Berechtigungen mit dem Attributpermission
fest. -
android:grantUriPermissions
- Wenn Personen normalerweise keine Berechtigung zum Zugriff auf die Daten des Contentanbieters haben, kann die Berechtigung dazu erteilt werden, sodass die durch die Attribute
readPermission
,writePermission
,permission
undexported
festgelegte Einschränkung vorübergehend aufgehoben wird.Es ist
"true"
, wenn die Berechtigung erteilt werden kann, und"false"
, wenn nicht. Wenn"true"
, kann die Berechtigung für alle Daten des Contentanbieters erteilt werden. Wenn"false"
, kann die Berechtigung nur für die Datenteilmengen gewährt werden, die gegebenenfalls in<grant-uri-permission>
-Unterelementen aufgeführt sind. Der Standardwert ist"false"
.Das Gewähren einer Berechtigung ist eine Möglichkeit, einer Anwendungskomponente einmaligen Zugriff auf durch eine Berechtigung geschützte Daten zu gewähren. Wenn eine E-Mail-Nachricht beispielsweise einen Anhang enthält, kann die E-Mail-Anwendung den entsprechenden Betrachter aufrufen, um ihn zu öffnen, auch wenn dieser keine allgemeine Berechtigung zum Einsehen aller Daten des Inhaltsanbieters hat.
In solchen Fällen wird die Berechtigung durch die Flags
FLAG_GRANT_READ_URI_PERMISSION
undFLAG_GRANT_WRITE_URI_PERMISSION
im ObjektIntent
gewährt, das die Komponente aktiviert. Die E-Mail-Anwendung könnte beispielsweiseFLAG_GRANT_READ_URI_PERMISSION
in die anContext.startActivity()
übergebeneIntent
-Datei einfügen. Die Berechtigung bezieht sich auf den URI in der DateiIntent
.Wenn Sie dieses Feature aktivieren, indem Sie entweder dieses Attribut auf
"true"
festlegen oder<grant-uri-permission>
-Unterelemente definieren, rufen SieContext.revokeUriPermission()
auf, wenn ein abgedeckter URI vom Anbieter gelöscht wird.Siehe auch das Element
<grant-uri-permission>
. android:icon
- Ein Symbol für den Contentanbieter.
Dieses Attribut wird als Verweis auf eine Drawable-Ressource festgelegt, die die Bilddefinition enthält. Wenn es nicht festgelegt ist, wird stattdessen das für die gesamte Anwendung angegebene Symbol verwendet. Weitere Informationen finden Sie im Abschnitt
icon
-Attribut des Elements<application>
. android:initOrder
- Die Reihenfolge, in der der Contentanbieter instanziiert wird, im Verhältnis zu anderen Contentanbietern, die von demselben Prozess gehostet werden. Wenn es Abhängigkeiten zwischen Contentanbietern gibt, können Sie durch Festlegen dieses Attributs für jeden einzelnen Contentanbieter dafür sorgen, dass die Inhalte in der für diese Abhängigkeiten erforderlichen Reihenfolge erstellt werden. Der Wert ist eine Ganzzahl, wobei höhere Zahlen zuerst initialisiert werden.
android:label
- Ein für den Nutzer lesbares Label für die bereitgestellten Inhalte.
Wenn dieses Attribut nicht festgelegt ist, wird stattdessen der Labelsatz für die gesamte Anwendung verwendet. Weitere Informationen finden Sie im Attribut
label
des<application>
-Elements.Das Label wird normalerweise als Verweis auf eine Stringressource festgelegt, damit es wie andere Strings in der Benutzeroberfläche lokalisiert werden kann. Der Einfachheit halber kann sie beim Entwickeln der Anwendung auch als Rohstring festgelegt werden.
android:multiprocess
- Wenn die Anwendung in mehreren Prozessen ausgeführt wird, bestimmt dieses Attribut, ob mehrere Instanzen des Inhaltsanbieters erstellt werden. Wenn der Wert
"true"
ist, hat jeder Prozess der App ein eigenes Contentanbieterobjekt. Bei"false"
teilen die Prozesse der App nur ein Contentanbieter-Objekt. Der Standardwert ist"false"
.Wenn Sie dieses Flag auf
"true"
festlegen, können Sie den Aufwand für die Kommunikation zwischen Prozessen reduzieren und so die Leistung verbessern. Gleichzeitig wird aber auch der Arbeitsspeicherbedarf jedes Prozesses erhöht. android:name
- Der Name der Klasse, die den Contentanbieter implementiert (eine abgeleitete Klasse von
ContentProvider
). Dies ist in der Regel ein voll qualifizierter Klassenname wie"com.example.project.TransportationProvider"
. Kurz gesagt: Wenn das erste Zeichen des Namens ein Punkt ist, wird es an den im Element<manifest>
angegebenen Paketnamen angehängt.Es gibt keine Standardeinstellung. Der Name muss angegeben werden.
android:permission
- Der Name einer Berechtigung, die Clients haben müssen, um die Daten des Contentanbieters zu lesen oder zu schreiben. Dieses Attribut ist eine bequeme Möglichkeit, eine einzige Berechtigung für Lese- und Schreibvorgänge festzulegen. Die Attribute
readPermission
,writePermission
undgrantUriPermissions
haben jedoch Vorrang vor diesem Attribut.Wenn auch das Attribut
readPermission
festgelegt ist, steuert es den Zugriff bei Abfragen an den Contentanbieter. Wenn das AttributwritePermission
festgelegt ist, wird damit der Zugriff zum Ändern der Daten des Anbieters gesteuert.Weitere Informationen zu Berechtigungen finden Sie im Abschnitt Berechtigungen in der App-Manifest-Übersicht und in Sicherheitstipps.
android:process
- Der Name des Prozesses, in dem der Contentanbieter ausgeführt wird. Normalerweise werden alle Komponenten einer Anwendung in dem für die Anwendung erstellten Standardprozess ausgeführt. Es hat denselben Namen wie das Anwendungspaket.
Mit dem Attribut
process
des<application>
-Elements kann ein anderer Standardwert für alle Komponenten festgelegt werden. Jede Komponente kann die Standardeinstellung mit einem eigenenprocess
-Attribut überschreiben, sodass Sie Ihre Anwendung auf mehrere Prozesse verteilen können.Wenn der diesem Attribut zugewiesene Name mit einem Doppelpunkt (
:
) beginnt, wird bei Bedarf ein neuer, für die Anwendung privater Prozess erstellt 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 dieses Namens ausgeführt, sofern sie dazu berechtigt ist. Dadurch können Komponenten in verschiedenen Anwendungen einen Prozess gemeinsam nutzen, wodurch die Ressourcennutzung reduziert wird.
android:readPermission
Eine Berechtigung, die Clients benötigen, um den Contentanbieter abzufragen.
Wenn der Anbieter
android:grantUriPermissions
auf"true"
festlegt oder ein bestimmter Client die Bedingungen eines Unterelements<grant-uri-permission>
erfüllt, kann der Client vorübergehend Lesezugriff auf die Daten des Contentanbieters erhalten.Weitere Informationen finden Sie auch bei den Attributen
permission
undwritePermission
.android:syncable
- Gibt an, ob die Daten, die vom Contentanbieter kontrolliert werden, mit Daten auf einem Server synchronisiert werden können. Es ist
"true"
, wenn dies möglich ist, und"false"
, wenn nicht. android:writePermission
Eine Berechtigung, die Clients benötigen, um Änderungen an den vom Contentanbieter kontrollierten Daten vorzunehmen.
Wenn der Anbieter
android:grantUriPermissions
auf"true"
festlegt oder ein bestimmter Client die Bedingungen eines Unterelements<grant-uri-permission>
erfüllt, kann der Client vorübergehenden Schreibzugriff erhalten, um die Daten des Contentanbieters zu ändern.Weitere Informationen finden Sie auch bei den Attributen
permission
undreadPermission
.
- eingeführt in:
- API-Level 1
- Siehe auch:
- Contentanbieter
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: 2024-04-02 (UTC).
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Benötigte Informationen nicht gefunden"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Zu umständlich/zu viele Schritte"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Nicht mehr aktuell"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problem mit der Übersetzung"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Problem mit Beispielen/Code"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Sonstiges"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Leicht verständlich"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Mein Problem wurde gelöst"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Sonstiges"
}]
{
"last_modified": "Zuletzt aktualisiert: 2024-04-02 (UTC).",
"state": ""
}