- 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:intentMatchingFlags=["none" | "enforceIntentFilter" | "allowNullAction"] 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><property>- Description :
-
Déclare un composant de fournisseur de contenu. Un fournisseur de contenu est une sous-classe de
ContentProviderqui 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 élément<provider>du fichier manifeste. Dans le cas contraire, le système ne les connaît pas et ne les exécute pas.Ne déclarez que les fournisseurs de contenu qui font partie de votre application. Ne déclarez pas les fournisseurs de contenu d'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é. Pour ce faire, appelez la méthode
ContentResolver.query()qui, entre autres arguments, prend un URI qui identifie le fournisseur :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'élément "authority"com.example.project.healthcareprovideridentifie le fournisseur lui-même. Le système Android recherche cet élément dans sa liste de fournisseurs connus et de leurs éléments "authority". La sous-chaînenurses/rnest 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 dans l'argumentandroid:name, mais uniquement l'élément "authority".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 éléments "authority", 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'éléments "authority", telle que
com.example.provider.cartoonprovider. Il s'agit généralement du nom de la sous-classeContentProviderqui 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.
"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 attributenabledqui s'applique à tous les composants d'application, y compris les fournisseurs de contenu. Pour que le fournisseur de contenu puisse être activé, les attributs<application>et<provider>doivent être tous les deux définis sur"true"(car ils sont par défaut). Si l'une des valeurs est"false", le fournisseur est désactivé. Elle ne peut pas être instanciée. android:directBootAwareIndique si le fournisseur de contenu est compatible avec le démarrage direct, c'est-à-dire 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. Seules les applications ayant le même ID utilisateur (UID) que le fournisseur, ou les applications qui ont été temporairement autorisées à accéder au fournisseur via l'élémentandroid:grantUriPermissionsy ont 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:targetSdkVersionsur 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:grantUriPermissionsIndique si ceux qui n'ont pas accès d'habitude aux données du fournisseur de contenu peuvent y accéder ou non, en levant temporairement la restriction imposée par les attributs
readPermission,writePermission,permissionetexported."true"si l'autorisation peut être accordée, et"false"dans le cas contraire. Si la valeur est"true", l'autorisation peut être accordée pour n'importe quelle donnée du fournisseur de contenu. Si la valeur est"false", l'autorisation ne peut être accordée que pour les sous-ensembles de données répertoriés dans les sous-éléments<grant-uri-permission>, 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 peut appeler le lecteur approprié pour l'ouvrir, même s'il ne dispose pas de l'autorisation générale pour consulter toutes les données du fournisseur de contenu.
Dans ce cas, l'autorisation est accordée par les options
FLAG_GRANT_READ_URI_PERMISSIONetFLAG_GRANT_WRITE_URI_PERMISSIONde l'objetIntentqui active le composant. Par exemple, l'application de messagerie peut placerFLAG_GRANT_READ_URI_PERMISSIONdans leIntenttransmis àContext.startActivity(). L'autorisation est spécifique à l'URI deIntent.Si vous activez cette fonctionnalité, en définissant cet attribut sur
"true"ou en définissant des sous-éléments<grant-uri-permission>, appelezContext.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 l'attribut
iconde l'élément<application>. android:initOrder- Ordre dans lequel le fournisseur de contenu est instancié par rapport aux autres fournisseurs de contenu hébergés par le même processus. En cas de dépendances entre fournisseurs de contenu, la définition de cet attribut pour chacun d'eux garantit leur création dans l'ordre requis par ces dépendances. La valeur est un entier, les nombres les plus élevés étant initialisés en premier.
android:intentMatchingFlags-
Utilisez cet attribut pour affiner la façon dont le système fait correspondre les intents entrants aux composants d'application. Par défaut, aucune règle de correspondance spéciale n'est appliquée.
La valeur définie sur une balise
<provider>remplace celle définie sur la balise<application>.La valeur doit correspondre à un ou plusieurs des indicateurs suivants, séparés par "
|" :Option Description noneDésactive toutes les règles de correspondance spéciales pour les intents entrants. Lorsque vous spécifiez plusieurs indicateurs, les valeurs conflictuelles sont résolues en donnant la priorité à l'indicateur none.enforceIntentFilterApplique une correspondance plus stricte pour les intents entrants :
- Les intents explicites doivent correspondre au filtre d'intent du composant cible.
- Les intents sans action ne correspondent à aucun filtre d'intent.
allowNullActionAssouplit les règles de correspondance pour autoriser la correspondance des intents sans action. Cette option est utilisée conjointement avec
enforceIntentFilterpour obtenir le comportement suivant :- Les intents explicites doivent correspondre au filtre d'intent du composant cible.
- Les intents sans action sont autorisés à correspondre à n'importe quel filtre d'intent.
Pour en savoir plus, consultez la section Intents plus sécurisés dans les changements de comportement d'Android 16 (niveau d'API 36).
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 l'attribut
labelde l'élément<application>.Le libellé est généralement défini comme une référence à une ressource de chaîne, de sorte qu'il puisse être localisé comme les autres chaînes de 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 la surcharge des communications entre les processus, mais aussi augmenter l'encombrement de la mémoire pour 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 nom de classe complet, tel que"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'élément<manifest>.Il n'y a pas de valeur par défaut. Vous devez renseigner le nom.
android:permissionNom 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,writePermissionetgrantUriPermissionssont prioritaires sur celui-ci.Si l'attribut
readPermissionest également défini, il contrôle l'accès pour interroger le fournisseur de contenu. Si l'attributwritePermissionest défini, il contrôle l'accès afin de 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:processNom 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.
L'attribut
processde l'élément<application>peut définir une valeur par défaut différente pour tous les composants. Toutefois, chaque composant peut remplacer la valeur par défaut par son propre attributprocess, ce qui vous permet de répartir votre application sur 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:readPermissionAutorisation 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
permissionetwritePermission.android:syncable- Indique si les données sous le contrôle du fournisseur de contenu peuvent être synchronisées avec les données d'un serveur.
"true"si tel est le cas, et"false"dans le cas contraire. android:writePermissionAutorisation dont les clients ont besoin pour modifier les données contrôlées 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
permissionetreadPermission.
- Première apparition :
- Niveau d'API 1
- Voir aussi :
- Fournisseurs de contenu
<fournisseur>
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 2026/07/03 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2026/07/03 (UTC)."],[],[]]