<fournisseur>

Syntaxe :
<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>
Contenu dans :
<application>
Peut contenir :
<meta-data>
<grant-uri-permission>
<intent-filter>
<path-permission>
Description :
Déclare un composant de fournisseur de contenu. Un fournisseur de contenu est une sous-classe de ContentProvider qui fournit un accès structuré aux données gérées par l'application. Tous les fournisseurs de contenu de votre application doivent être définis dans un <provider> dans le fichier manifeste. Sinon, le système n'en a pas connaissance et ne les exécute pas.

Ne déclarez que les fournisseurs de contenu qui font partie de votre application. Ne déclarez pas de fournisseurs de contenu les autres applications que vous utilisez dans votre application.

Le système Android stocke les références aux fournisseurs de contenu en fonction d'une chaîne authority, qui fait partie de leur URI de contenu. Par exemple, supposons que vous souhaitiez accéder à un fournisseur de contenu qui stocke des informations sur les professionnels de santé. À faire vous appelez la méthode ContentResolver.query(), qui utilise un URI qui identifie le fournisseur, entre autres arguments:

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

Le schéma content: identifie l'URI en tant qu'URI de contenu pointant vers un fournisseur de contenu Android. L'autorité com.example.project.healthcareprovider identifie le fournisseur lui-même. La Le système Android recherche l'autorité dans sa liste de fournisseurs connus et leurs autorités. La sous-chaîne nurses/rn est un chemin d'accès, que le fournisseur de contenu utilise pour identifier des sous-ensembles de données du fournisseur.

Lorsque vous définissez votre fournisseur dans l'élément <provider>, vous n'incluez pas le schéma ni le chemin d'accès dans l'argument android:name, mais uniquement une autorité compétente.

Pour en savoir plus sur l'utilisation et le développement des fournisseurs de contenu, consultez Fournisseurs de contenu :

Attributs :
android:authorities
Liste d'un ou de plusieurs éléments "authority" d'URI qui identifient les données proposées par le fournisseur de contenu. Pour indiquer plusieurs autorités, séparez leurs noms par un point-virgule. Pour éviter les conflits, utilisez une convention d'attribution de noms de style Java pour les noms d'autorité. comme com.example.provider.cartoonprovider. Il s'agit généralement du nom de la sous-classe ContentProvider qui implémente le fournisseur

Il n'y a pas de valeur par défaut. Vous devez spécifier au moins un élément "authority".

android:enabled
Indique si le fournisseur de contenu peut être instancié par le système. Il est "true" si tel est le cas, et "false" dans le cas contraire. La valeur par défaut est "true".

L'élément <application> possède son propre attribut enabled qui s'applique à tous les composants d'application, y compris les fournisseurs de contenu. La <application> et <provider> Les attributs doivent tous les deux être "true", car ils sont activés par défaut pour le fournisseur de contenu. Si l'une des valeurs "false", le fournisseur est désactivé. Il ne peut pas être instancié.

android:directBootAware

Indique si le fournisseur de contenu est compatible avec le démarrage direct, c'est-à-dire si s’il peut s’exécuter avant que l’utilisateur déverrouille l’appareil.

Remarque : Pendant le démarrage direct, un fournisseur de contenu de votre application ne peut accéder qu'aux données stockées dans l'espace de stockage protégé par l'appareil.

La valeur par défaut est "false".

android:exported
Indique si le fournisseur de contenu est disponible pour d'autres applications.
  • "true": le fournisseur est disponible pour d'autres applications. Toute application peut utiliser l'URI de contenu du fournisseur pour y accéder, sous réserve des autorisations spécifiées par celui-ci.
  • "false": le fournisseur n'est pas disponible pour d'autres applications. Définissez android:exported="false" pour limiter l'accès du fournisseur à vos applications. Uniquement les applications ayant le même ID utilisateur (UID) que le fournisseur applications auxquelles l'accès est accordé temporairement via le android:grantUriPermissions , y avez accès.

Comme cet attribut a été introduit au niveau d'API 17, tous les appareils exécutant un niveau d'API 16 ou inférieur se comportent comme si cet attribut était défini sur "true". Si vous définissez android:targetSdkVersion sur 17 ou plus, la valeur par défaut est "false" pour les appareils exécutant le niveau d'API 17 ou supérieur.

Vous pouvez définir android:exported="false" tout en limitant l'accès à votre fournisseur en définissant des autorisations avec l'attribut permission.

android:grantUriPermissions
Que les personnes qui, en temps normal, ne sont pas autorisées à accéder aux données du fournisseur de contenu peuvent être autorisés à le faire, de contourner temporairement la restriction imposée par le readPermission, writePermission, permission et exported .

"true" si l'autorisation peut être accordée, "false" dans le cas contraire. Si la valeur est "true", l'autorisation peut être accordée pour n'importe quel contenu les données du fournisseur. Si la valeur est "false", l'autorisation ne peut être accordée aux sous-ensembles de données <grant-uri-permission> sous-éléments, le cas échéant. La valeur par défaut est "false".

L'autorisation est un moyen d'accorder à un composant d'application un accès ponctuel aux données protégées par une autorisation. Par exemple, lorsqu'un e-mail contient une pièce jointe, l'application de messagerie peut appeler le le lecteur approprié pour l'ouvrir, même s'il n'a pas de connaissances générales l'autorisation de consulter toutes les données du fournisseur de contenu.

Dans ce cas, l'autorisation est accordée par FLAG_GRANT_READ_URI_PERMISSION et FLAG_GRANT_WRITE_URI_PERMISSION indicateurs dans l'objet Intent qui active le composant. Par exemple, de messagerie peut placer FLAG_GRANT_READ_URI_PERMISSION dans Intent transmis à Context.startActivity(). L'autorisation est spécifique à l'URI dans Intent.

Si vous activez cette fonctionnalité, soit en définissant cet attribut sur "true" ou en définissant <grant-uri-permission> sous-éléments, appeler Context.revokeUriPermission() Lorsqu'un URI couvert est supprimé du fournisseur.

Consultez également l'élément <grant-uri-permission>.

android:icon
Icône représentant le fournisseur de contenu. Cet attribut est défini comme référence à une ressource drawable contenant la définition de l'image. Si cette valeur n'est pas définie, l'icône spécifiée pour l'application dans son ensemble est utilisée à la place. Pour en savoir plus, consultez les <application> l'attribut icon de l'élément.
android:initOrder
Ordre dans lequel le fournisseur de contenu est instancié par rapport à d'autres fournisseurs de contenu hébergés par le même processus. En cas de dépendances entre les fournisseurs de contenu, pour chacun d'eux permet de s'assurer qu'ils sont créés dans l'ordre requises par ces dépendances. La valeur est un nombre entier, les nombres les plus élevés étant initialisés en premier.
android:label
Libellé lisible pour le contenu fourni. Si cet attribut n'est pas défini, le libellé défini pour l'application dans son ensemble est utilisé à la place. Pour en savoir plus, consultez les éléments <application> label.

Le libellé est généralement défini comme référence à une ressource de chaîne, de sorte que il peut être localisé comme les autres chaînes dans l'interface utilisateur. Toutefois, lorsque vous développez l'application, vous pouvez également le définir comme une chaîne brute.

android:multiprocess
Si l'application s'exécute dans plusieurs processus, cet attribut détermine si plusieurs instances du fournisseur de contenu sont créées. Si la valeur est "true", chacun des processus de l'application possède son propre objet de fournisseur de contenu. Si la valeur est "false", les processus de l'application ne partagent qu'un objet de fournisseur de contenu. La valeur par défaut est "false".

Définir cet indicateur sur "true" peut améliorer les performances en réduisant les frais généraux liés à la communication inter-processus, mais cela augmente aussi la mémoire de chaque processus.

android:name
Nom de la classe qui implémente le fournisseur de contenu, une sous-classe de ContentProvider. Il s'agit généralement d'un fichier nom de classe, par exemple "com.example.project.TransportationProvider". Cependant, pour faire court, si le premier caractère du nom est un point, il est ajouté au nom du package spécifié dans Élément <manifest>.

Il n'y a pas de valeur par défaut. Vous devez renseigner le nom.

android:permission
Nom d'une autorisation que les clients doivent avoir pour lire ou écrire les données du fournisseur de contenu. Cet attribut offre un moyen pratique de définir une seule autorisation pour la lecture et l'écriture. Toutefois, les attributs readPermission, writePermission et grantUriPermissions sont prioritaires sur celui-ci.

Si le readPermission est également défini, il contrôle l'accès pour interroger le fournisseur de contenu. Si l'attribut writePermission est défini, il contrôle l'accès pour modifier les données du fournisseur.

Pour en savoir plus sur les autorisations, consultez la section Autorisations dans la présentation du fichier manifeste d'application et les conseils de sécurité.

android:process
Nom du processus dans lequel le fournisseur de contenu s'exécute. Normalement, tous les composants d'une application s'exécutent dans le processus par défaut créé pour celle-ci. Il porte le même nom que le package de l'application.

La <application> élément process peut définir une valeur différente par défaut pour tous les composants. Mais chaque composant peut remplacer la valeur par défaut avec son propre attribut process, ce qui vous permet dans plusieurs processus.

Si le nom assigné à cet attribut commence par le signe deux-points (:), un processus réservé à l'application est créé lorsque cela est nécessaire, et l'activité est exécutée dans ce processus.

Si le nom du processus commence par une lettre minuscule, l'activité sera exécutée dans un processus global du même nom, à condition qu'elle soit autorisée à le faire. Cela permet aux composants de différentes applications de partager un processus, ce qui réduit l'utilisation des ressources.

android:readPermission

Autorisation que les clients doivent avoir pour interroger le fournisseur de contenu.

Si le fournisseur définit android:grantUriPermissions à"true", ou si un client donné remplit les conditions d'un sous-élément <grant-uri-permission>, le client peut obtenir un accès en lecture temporaire aux données du fournisseur de contenu.

Consultez également les attributs permission et writePermission.

android:syncable
Indique si les données sous le contrôle du fournisseur de contenu peuvent être synchronisés avec les données d'un serveur. Il est "true" si tel est le cas, et "false" dans le cas contraire.
android:writePermission

Une autorisation dont les clients ont besoin pour apporter des modifications aux données contrôlé par le fournisseur de contenu.

Si le fournisseur définit android:grantUriPermissions à"true", ou si un client donné remplit les conditions d'un sous-élément <grant-uri-permission>, le client peut obtenir un accès en écriture temporaire pour modifier les données du fournisseur de contenu.

Consultez également les attributs permission et readPermission.

Première apparition :
Niveau d'API 1
Voir aussi :
Fournisseurs de contenu
.