<provider>

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 Zertifizierungsstelle com.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 Teilstring nurses/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 Argument android: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 Klasse ContentProvider, 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 eigenes enabled-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 Sie android: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 Element android: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 Sie android: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 Attribut permission 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 und exported 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 und FLAG_GRANT_WRITE_URI_PERMISSION im Objekt Intent gewährt, das die Komponente aktiviert. Die E-Mail-Anwendung könnte beispielsweise FLAG_GRANT_READ_URI_PERMISSION in die an Context.startActivity() übergebene Intent-Datei einfügen. Die Berechtigung bezieht sich auf den URI in der Datei Intent.

Wenn Sie dieses Feature aktivieren, indem Sie entweder dieses Attribut auf "true" festlegen oder <grant-uri-permission>-Unterelemente definieren, rufen Sie Context.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 und grantUriPermissions haben jedoch Vorrang vor diesem Attribut.

Wenn auch das Attribut readPermission festgelegt ist, steuert es den Zugriff bei Abfragen an den Contentanbieter. Wenn das Attribut writePermission 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 eigenen process-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 und writePermission.

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 und readPermission.

eingeführt in:
API-Level 1
Siehe auch:
Contentanbieter