- Syntaxe :
<permission android:description="string resource" android:icon="drawable resource" android:label="string resource" android:name="string" android:permissionGroup="string" android:protectionLevel=["normal" | "dangerous" | "signature" | ...] />
- Contenu dans :
<manifest>
- Description :
- Déclare une autorisation de sécurité utilisée pour limiter l'accès à des composants ou à des fonctionnalités propres à cette application ou à d'autres. Pour en savoir plus sur le fonctionnement des autorisations, consultez la section Autorisations dans la présentation du fichier manifeste d'application et les conseils de sécurité.
- Attributs :
android:description
- Description de l'autorisation lisible par l'utilisateur, qui est plus longue et plus détaillée que le libellé. Cet attribut peut s'afficher, par exemple, pour expliquer l'autorisation à l'utilisateur lorsqu'il est invité à accorder l'autorisation à une autre application.
Cet attribut est défini comme référence à une ressource de chaîne. Contrairement à l'attribut
label
, il ne peut pas s'agir d'une chaîne brute. android:icon
- Référence à une ressource drawable pour une icône représentant l'autorisation.
android:label
- Nom de l'autorisation lisible par les utilisateurs.
Pour plus de commodité, vous pouvez définir le libellé directement en tant que chaîne brute lorsque vous développez l'application. Cependant, lorsque l'application sera prête à être publiée, définissez-le en tant que référence à une ressource de chaîne, afin qu'il puisse être localisé comme les autres chaînes de l'UI.
android:name
- Nom à utiliser dans le code pour faire référence à l'autorisation, par exemple dans un élément
<uses-permission>
ou les attributspermission
des composants d'application.Remarque : Le système ne permet pas à plusieurs packages de déclarer une autorisation portant le même nom, sauf si tous les packages sont signés avec le même certificat. Si un package déclare une autorisation, le système ne permet pas non plus à l'utilisateur d'installer d'autres packages avec le même nom d'autorisation, sauf si ces packages sont signés avec le même certificat que le premier.
C'est pourquoi Google recommande d'ajouter le nom du package de l'application comme préfixe aux autorisations, selon la méthode du nom de domaine inversé. Faites suivre ce préfixe par
.permission.
, puis par une description (en majuscules SNAKE_CASE) de la fonctionnalité représentée par l'autorisation. Par exemple :com.example.myapp.permission.ENGAGE_HYPERSPACE
.Suivez cette recommandation pour éviter les conflits dans les noms et pour identifier clairement le propriétaire et le rôle d'une autorisation personnalisée.
android:permissionGroup
- Attribue cette autorisation à un groupe. La valeur de cet attribut est le nom du groupe, qui est déclaré avec l'élément
<permission-group>
dans cette application ou dans une autre. Si cet attribut n'est pas défini, l'autorisation n'appartient pas à un groupe. android:protectionLevel
-
Caractérise le risque associé à l'autorisation et indique la procédure que le système doit suivre pour déterminer s'il convient d'accorder l'autorisation à une application qui la demande.
Chaque niveau de protection se compose d'un type d'autorisation de base et, le cas échéant, d'un nombre variable d'indicateurs. Par exemple, le niveau de protection
"dangerous"
ne comporte aucun indicateur. En revanche, le niveau de protection"signature|privileged"
combine le type d'autorisation de base"signature"
et l'indicateur"privileged"
.Le tableau suivant présente tous les types d'autorisations de base. Pour obtenir la liste des indicateurs, consultez la rubrique
protectionLevel
.Valeur Signification "normal"
Valeur par défaut. Autorisation à faible risque qui permet aux applications qui la demandent d'accéder à des fonctionnalités isolées au niveau de l'application, avec un risque minimal pour d'autres applications, le système ou l'utilisateur. Le système accorde automatiquement ce type d'autorisation à une application qui la demande lors de l'installation, sans demander explicitement l'approbation de l'utilisateur (qui a toujours la possibilité de passer ces autorisations en revue avant l'installation). "dangerous"
Autorisation présentant un risque plus élevé, qui donne accès aux données utilisateur privées ou au contrôle de l'appareil à une application qui le demande, ce qui peut avoir un impact négatif sur l'utilisateur. Étant donné que ce type d'autorisation présente un risque, le système peut ne pas l'accorder automatiquement à l'application à l'origine de la demande. Par exemple, toutes les autorisations dangereuses demandées par une application peuvent être présentées à l'utilisateur et nécessiter une confirmation. Une autre approche peut être appliquée pour éviter que l'utilisateur autorise automatiquement l'utilisation des fonctionnalités concernées. "signature"
Autorisation accordée par le système uniquement si l'application demandeuse est signée avec le même certificat que l'application qui a déclaré l'autorisation. Si les certificats correspondent, le système accorde automatiquement l'autorisation sans avertir l'utilisateur ni demander son approbation explicite. "knownSigner"
Autorisation accordée par le système uniquement si l'application demandeuse est signée avec un certificat autorisé. Si le certificat du demandeur est répertorié, le système accorde automatiquement l'autorisation sans avertir l'utilisateur ni demander son approbation explicite. "signatureOrSystem"
Ancien synonyme de
"signature|privileged"
. Obsolète à partir du niveau d'API 23.Autorisation que le système n'accorde qu'aux applications qui se trouvent dans un dossier dédié sur l'image du système Android ou qui sont signées avec le même certificat que l'application qui a déclaré l'autorisation. Évitez d'utiliser cette option, car le niveau de protection
"signature"
est suffisant pour la plupart des besoins et fonctionne quel que soit l'emplacement d'installation des applications.L'autorisation
"signatureOrSystem"
est utilisée dans certaines situations spéciales où plusieurs fournisseurs ont des applications intégrées dans une image système et doivent partager explicitement des fonctionnalités spécifiques, car ces fonctionnalités sont développées simultanément.
- Première apparition :
- Niveau d'API 1
- Voir aussi :
<uses-permission>
<permission-tree>
<permission-group>
<autorisation>
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 2025/07/27 (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 2025/07/27 (UTC)."],[],[],null,["# <permission\u003e\n\nsyntax:\n:\n\n ```xml\n \u003cpermission android:description=\"string resource\"\n android:icon=\"drawable resource\"\n android:label=\"string resource\"\n android:name=\"string\"\n android:permissionGroup=\"string\"\n android:protectionLevel=[\"normal\" | \"dangerous\" |\n \"signature\" | ...] /\u003e\n ```\n\ncontained in:\n: [\u003cmanifest\u003e](/guide/topics/manifest/manifest-element)\n\ndescription:\n: Declares a security permission used to\n limit access to specific components or features of this or other applications.\n For more information about how permissions work, see the [Permissions](/guide/topics/manifest/manifest-intro#perms) section in the app manifest overview and [Security tips](/guide/topics/security/security).\n\nattributes:\n:\n\n `android:description`\n\n : A user-readable description of the permission that is longer and more informative than the label. It might display, for example, to explain the permission to the user when the user is asked to grant the permission to another application.\u003cbr /\u003e\n\n\n This attribute is set as a reference to a string resource.\n Unlike the `label` attribute, it can't be a raw string.\n\n `android:icon`\n : A reference to a drawable resource for an icon that represents the\n permission.\n\n `android:label`\n\n : A user-readable name for the permission.\u003cbr /\u003e\n\n\n As a convenience, the label can be directly set\n as a raw string while you're developing the application. However,\n when the application is ready to publish, set it as a\n reference to a string resource, so that it can be localized like other\n strings in the user interface.\n\n `android:name`\n : The name to be used in\n code to refer to the permission, such as in a\n [\u003cuses-permission\u003e](/guide/topics/manifest/uses-permission-element) element or the\n `permission` attributes of application components.\n\n\n **Note:** The system doesn't let multiple packages declare\n a permission with the same name unless all the packages are signed with the\n same certificate. If a package declares a permission, the system doesn't permit\n the user to install other packages with the same permission name, unless\n those packages are signed with the same certificate as the first package.\n\n For this reason, Google recommends prefixing permissions with the app's package name,\n using reverse-domain-style naming.\n Follow this prefix with `.permission.` and then a description of the\n capability that the permission represents in upper SNAKE_CASE. For example:\n `com.example.myapp.permission.ENGAGE_HYPERSPACE`.\n\n Following this recommendation avoids naming collisions and helps clearly identify the owner\n and intention of a custom permission.\n\n `android:permissionGroup`\n : Assigns this permission to a group. The value of this attribute is\n the name of the group, which is declared with the\n [\u003cpermission-group\u003e](/guide/topics/manifest/permission-group-element) element in this\n or another application. If this attribute isn't set, the permission\n doesn't belong to a group.\n\n `android:protectionLevel`\n\n :\n Characterizes the potential risk implied in the permission and\n indicates the procedure for the system to follow when determining\n whether to grant the permission to an application requesting it.\n\n\n Each protection level consists of a base permission type and zero or more\n flags. For example, the `\"dangerous\"` protection level has no\n flags. In contrast, the protection level `\"signature|privileged\"`\n is a combination of the `\"signature\"` base permission type and the\n `\"privileged\"` flag.\n\n\n The following table shows all base permission types. For a list of flags, see\n [protectionLevel](/reference/android/R.attr#protectionLevel).\n\n | Value | Meaning |\n |-----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n | `\"normal\"` | The default value. A lower-risk permission that gives requesting applications access to isolated application-level features with minimal risk to other applications, the system, or the user. The system automatically grants this type of permission to a requesting application at installation, without asking for the user's explicit approval, though the user always has the option to review these permissions before installing. |\n | `\"dangerous\"` | A higher-risk permission that gives a requesting application access to private user data or control over the device that can negatively impact the user. Because this type of permission introduces potential risk, the system might not automatically grant it to the requesting application. For example, any dangerous permissions requested by an application might be displayed to the user and require confirmation before proceeding, or some other approach might be taken to avoid the user automatically granting the use of such facilities. |\n | `\"signature\"` | A permission that the system grants only if the requesting application is signed with the same certificate as the application that declared the permission. If the certificates match, the system automatically grants the permission without notifying the user or asking for the user's explicit approval. |\n | `\"knownSigner\"` | A permission that the system grants only if the requesting application is signed with [an allowed certificate](/guide/topics/permissions/defining#grant-signature-permissions). If the requester's certificate is listed, the system automatically grants the permission without notifying the user or asking for the user's explicit approval. |\n | `\"signatureOrSystem\"` | *Old synonym for `\"signature|privileged\"`. Deprecated in API level 23.* A permission that the system grants only to applications that are in a dedicated folder on the Android system image *or* that are signed with the same certificate as the application that declared the permission. Avoid using this option, as the `\"signature\"` protection level is sufficient for most needs and works regardless of where apps are installed. The `\"signatureOrSystem\"` permission is used for certain special situations where multiple vendors have applications built into a system image and need to share specific features explicitly because they are being built together. |\n\nintroduced in:\n: API level 1\n\nsee also:\n: [\u003cuses-permission\u003e](/guide/topics/manifest/uses-permission-element)\n\n [\u003cpermission-tree\u003e](/guide/topics/manifest/permission-tree-element)\n\n [\u003cpermission-group\u003e](/guide/topics/manifest/permission-group-element)"]]