- 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înenurses/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'argumentandroid: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-classeContentProvider
qui implémente le fournisseurIl 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 attributenabled
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éfinissezandroid: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 leandroid: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éfinissezandroid: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'attributpermission
. -
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
etexported
."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
etFLAG_GRANT_WRITE_URI_PERMISSION
indicateurs dans l'objetIntent
qui active le composant. Par exemple, de messagerie peut placerFLAG_GRANT_READ_URI_PERMISSION
dansIntent
transmis àContext.startActivity()
. L'autorisation est spécifique à l'URI dansIntent
.Si vous activez cette fonctionnalité, soit en définissant cet attribut sur
"true"
ou en définissant<grant-uri-permission>
sous-éléments, appelerContext.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'attributicon
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
etgrantUriPermissions
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'attributwritePermission
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émentprocess
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 attributprocess
, 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
etwritePermission
.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
etreadPermission
.
- Première apparition :
- Niveau d'API 1
- Voir aussi :
- Fournisseurs de contenu
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/08/22 (UTC).
[null,null,["Dernière mise à jour le 2024/08/22 (UTC)."],[],[]]