<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 Komponente des Contentanbieters. Ein Contentanbieter ist eine abgeleitete Klasse ContentProvider, die strukturierten Zugriff auf Daten ermöglicht, die vom . Alle Contentanbieter in Ihrer App müssen in einer <provider>-Element in der Manifestdatei. Andernfalls erkennt das System sie nicht. und führt sie nicht aus.

Geben Sie nur Contentanbieter an, die Teil Ihrer App sind. Erklären Sie Contentanbieter nicht in andere Anwendungen, die Sie in Ihrer Anwendung nutzen.

Das Android-System speichert Verweise auf Contentanbieter gemäß einer Zertifizierungsstelle. String, der Teil des Inhalts-URI des Anbieters ist. Angenommen, Sie möchten auf einen Contentanbieter zuzugreifen, der Informationen über medizinisches Fachpersonal speichert. Aufgabe rufen Sie die Methode auf, ContentResolver.query() für einen URI, der unter anderem den Anbieter identifiziert:

content://com.example.project.healthcareprovider/nurses/rn

Das Schema content: gibt den URI als Inhalts-URI an, der auf Contentanbieter für Android. Die Behörde com.example.project.healthcareprovider identifiziert den Anbieter selbst. Die Das Android-System sucht die Behörde in der Liste der bekannten Anbieter und ihrer Behörden. Der Teilstring nurses/rn ist ein Pfad, den der Contentanbieter verwendet. Teilmengen der Anbieterdaten zu identifizieren.

Wenn Sie Ihren Anbieter im Element <provider> definieren, Fügen Sie das Schema oder den Pfad nicht in das Argument android:name ein, Befugnis.

Informationen zur Verwendung und Entwicklung von Contentanbietern finden Sie unter Contentanbieter:

Attribute:
android:authorities
Eine Liste mit einer oder mehreren URI-Stellen, die die vom Contentanbieter angebotenen Daten identifizieren. Sie können mehrere Zertifizierungsstellen auflisten, indem Sie deren Namen durch ein Semikolon trennen. Um Konflikte zu vermeiden, sollten Sie Namenskonventionen im Java-Stil wie com.example.provider.cartoonprovider. In der Regel ist das der Name, der abgeleiteten Klasse ContentProvider, 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. Es ist "true", wenn dies möglich ist, und "false", wenn nicht. Der Standardwert ist "true".

Das <application>-Element hat eine eigene Attribut „enabled“, das für alle gilt Anwendungskomponenten wie Contentanbieter. Die <application> und <provider> müssen beide "true" sein, da sie beide sind standardmäßig für den Contentanbieter aktiviert. Wenn einer der folgenden Werte zutrifft: "false", der Anbieter ist deaktiviert. Es kann nicht instanziiert werden.

android:directBootAware

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 der Direct Boot, ein Inhalt in Ihrer Anwendung nur auf die Daten zugreifen kann, die in Gerätegeschützter Speicher.

Der Standardwert ist "false".

android:exported
Gibt an, ob der Contentanbieter anderen Anwendungen zur Verfügung steht.
  • "true": Der Anbieter steht anderen Anwendungen zur Verfügung. Jede Anwendung kann verwenden Sie den Inhalts-URI des Anbieters, um auf sie zuzugreifen, vorbehaltlich der für und den Anbieter.
  • "false": Der Anbieter ist für andere Anwendungen nicht verfügbar. Festlegen android:exported="false", um den Zugriff auf den Anbieter auf Ihr Anwendungen. Nur Anwendungen, die dieselbe Nutzer-ID (UID) wie der Anbieter haben Anwendungen, denen vorübergehend Zugriff auf die über das android:grantUriPermissions darauf zugreifen können.

Da dieses Attribut in API-Ebene 17 eingeführt wurde, werden alle Geräte, auf denen das API-Level ausgeführt wird, 16 und niedriger verhalten sich so, als wäre dieses Attribut auf "true" gesetzt. Wenn Sie android:targetSdkVersion auf 17 oder höher setzen, ist der Standardwert für Geräte, auf denen die API ausgeführt wird, "false". ab Level 17.

Sie können android:exported="false" festlegen und trotzdem den Zugriff auf Ihr indem Sie Berechtigungen mit der permission .

android:grantUriPermissions
Ob Personen, die normalerweise nicht berechtigt sind, Zugriff auf die Daten des Contentanbieters erhalten, kann dies erlaubt werden, die Beschränkung durch die readPermission, writePermission, permission und exported Attribute.

Wenn die Berechtigung gewährt werden kann, ist es "true", andernfalls "false". Wenn "true", kann für alle Inhalte eine Berechtigung erteilt werden Daten des Anbieters. Wenn "false", kann die Berechtigung nur gewährt werden zu den in der Tabelle aufgeführten <grant-uri-permission>-Unterelemente, falls zutreffend. Der Standardwert ist "false".

Das Erteilen von Berechtigungen ist eine Möglichkeit, einer Anwendungskomponente einmalig Zugriff auf Daten, die durch eine Berechtigung geschützt sind. Wenn beispielsweise eine E-Mail Nachricht einen Anhang enthält, ruft die E-Mail-Anwendung möglicherweise auf der ob er keine allgemeinen Angaben machen muss, Berechtigung, sich alle Daten des Contentanbieters anzusehen.

In solchen Fällen wird die Berechtigung FLAG_GRANT_READ_URI_PERMISSION und FLAG_GRANT_WRITE_URI_PERMISSION Flags im Objekt Intent, mit dem die Komponente aktiviert wird. Beispiel: Der Parameter E-Mail-Anwendung möglicherweise FLAG_GRANT_READ_URI_PERMISSION im Intent an Context.startActivity() übergeben. Die Berechtigung ist spezifisch zum URI in Intent.

Wenn Sie diese Funktion aktivieren, können Sie entweder das Attribut auf "true" setzen oder durch Definieren von <grant-uri-permission> Unterelemente, Aufruf Context.revokeUriPermission() Ein abgedeckter URI wird vom Anbieter gelöscht.

Weitere Informationen findest du in den <grant-uri-permission> -Elements.

android:icon
Ein Symbol für den Contentanbieter. Dieses Attribut wird als Verweis auf eine Drawable-Ressource festgelegt, die Bilddefinition. Wenn nicht festgelegt, wird das für die Anwendung angegebene Symbol stattdessen als Ganzes verwendet. Weitere Informationen findest du in den <application>. icon-Attributs des Elements.
android:initOrder
Die Reihenfolge, in der der Contentanbieter instanziiert wird im Verhältnis zu anderen Contentanbietern, die von demselben Prozess gehostet werden. Bei Abhängigkeiten zwischen Contentanbietern können Sie dafür sorgen, dass sie in der Reihenfolge die für diese Abhängigkeiten erforderlich sind. Der Wert ist eine Ganzzahl, wobei zuerst höhere Zahlen initialisiert werden.
android:label
Ein für Nutzer lesbares Label für den bereitgestellten Inhalt. Wenn dieses Attribut nicht festgelegt ist, gilt das Label für die Anwendung als Ganzes verwendet werden. Weitere Informationen findest du in den <application>-Elementen label-Attribut.

Das Label wird normalerweise als Verweis auf eine Stringressource festgelegt, sodass kann er wie andere Zeichenfolgen in der Benutzeroberfläche lokalisiert werden. Der Einfachheit halber sollten Sie kann auch als Rohstring festgelegt werden.

android:multiprocess
Wenn die App in mehreren Prozessen ausgeführt wird, bestimmt dieses Attribut, werden mehrere Instanzen des Contentanbieters erstellt. Wenn "true", Jeder Prozess der App hat ein eigenes Inhaltsanbieterobjekt. Wenn "false", die Prozesse der App teilen sich nur ein Contentanbieterobjekt. Der Standardwert ist "false".

Das Festlegen dieses Flags auf "true" kann die Leistung verbessern, indem den Aufwand für die Interprozesskommunikation reduzieren, aber auch den Arbeitsspeicher erhöhen, der einzelnen Prozesse.

android:name
Der Name der Klasse, in der der Contentanbieter implementiert ist, eine abgeleitete Klasse von ContentProvider. Dies ist normalerweise ein voll qualifizierter Klassenname, z. B. "com.example.project.TransportationProvider". Kurz gesagt: Wenn das erste Zeichen des Namens ein Punkt ist, wird er an den Paketnamen angehängt, der in der <manifest>-Element.

Es gibt keine Standardeinstellung. Der Name muss angegeben werden.

android:permission
Der Name einer Berechtigung, die Clients zum Lesen oder Schreiben des des Contentanbieters verwendet. Mit diesem Attribut können Sie eine Lese- und Schreibberechtigung. Die readPermission, Die Attribute writePermission und grantUriPermissions haben Vorrang zu diesem Thema.

Wenn die readPermission festgelegt ist, steuert es den Zugriff für die Abfrage des Contentanbieters. Wenn das Attribut writePermission festgelegt ist, und steuert den Zugriff, um die Daten des Anbieters zu ändern.

Weitere Informationen zu Berechtigungen finden Sie in der Berechtigungen in der App-Manifestübersicht und Sicherheitstipps

android:process
Der Name des Prozesses, in dem der Contentanbieter ausgeführt wird. Normalerweise werden alle Komponenten einer Anwendung in dem Standardprozess ausgeführt, der für den . Es hat denselben Namen wie das Anwendungspaket.

Die <application> Element process unterschiedliche Werte für alle Komponenten. Jede Komponente kann jedoch den Standardwert mit einem eigenen process-Attribut, sodass Sie Ihre in mehreren Prozessen anwenden können.

Wenn der diesem Attribut zugewiesene Name mit einem Doppelpunkt (:) beginnt, wird ein neuer ist ein auf die Anwendung gebundener Prozess und wird erstellt, wenn er benötigt während die Aktivität ausgeführt wird.

Wenn der Prozessname mit einem Kleinbuchstaben beginnt, wird die Aktivität ausgeführt in einem globalen Prozess dieses Namens erfolgen, sofern er dazu berechtigt ist. So können Komponenten in verschiedenen Anwendungen einen Prozess gemeinsam nutzen, Ressourcennutzung.

android:readPermission

Eine Berechtigung, die Kunden haben müssen, um den Contentanbieter abzufragen.

Wenn der Anbieter android:grantUriPermissions festlegt an "true" oder wenn ein Kunde die Bedingungen eines <grant-uri-permission> Unterelement kann der Client vorübergehend Lesezugriff auf den Inhalt Daten des Anbieters.

Weitere Informationen finden Sie in den permission und writePermission-Attribute.

android:syncable
Ob die Daten, die der Kontrolle des Contentanbieters unterliegen, mit Daten auf einem Server synchronisiert werden. Es ist "true" falls möglich, und "false", wenn nicht.
android:writePermission

Berechtigung, die Clients benötigen, um Änderungen an den Daten vorzunehmen die vom Contentanbieter kontrolliert werden.

Wenn der Anbieter android:grantUriPermissions festlegt an "true" oder wenn ein Kunde die Bedingungen eines <grant-uri-permission> Unterelement kann der Client vorübergehenden Schreibzugriff erhalten, um den Inhalt Daten des Anbieters.

Weitere Informationen finden Sie in den permission und readPermission-Attribute.

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