Sobes.tech
Junior

Quels types d'autorisations (permissions) existent dans Android?

sobes.tech IA

Réponse de l'IA

Sur Android, il existe plusieurs types d'autorisations qui déterminent les niveaux d'accès de l'application aux ressources protégées et aux données de l'utilisateur.

  • Autorisations normales : Autorisations avec un risque minimal. Elles sont accordées automatiquement lors de l'installation de l'application et ne nécessitent pas le consentement explicite de l'utilisateur pendant l'exécution. Par exemple, l'accès à Internet (android.permission.INTERNET).
  • Autorisations dangereuses : Autorisations à haut risque. Elles nécessitent le consentement explicite de l'utilisateur lors de l'exécution de l'application. L'accès à ces ressources peut affecter la confidentialité ou le fonctionnement de l'appareil. Par exemple, l'accès aux contacts (android.permission.READ_CONTACTS), à la caméra (android.permission.CAMERA).
  • Autorisations de signature : Autorisations pouvant être accordées aux applications signées avec le même certificat que l'application qui définit l'autorisation. Utilisées pour contrôler l'accès entre les composants d'un même système ou ensemble d'applications.
  • Autorisations de signature ou système : Ces autorisations peuvent être accordées soit aux applications signées avec le même certificat, soit aux applications situées dans la section système.

De plus, on peut distinguer :

  • Autorisations à l'installation : Autorisations demandées et accordées lors de l'installation de l'application. Incluent les autorisations normales et de signature.
  • Autorisations en temps d'exécution : Autorisations demandées lors de l'exécution sur des appareils Android 6.0 (API niveau 23) et supérieurs. Incluent les autorisations dangereuses.
  • Autorisations spéciales : Une classe particulière d'autorisations nécessitant des étapes spécifiques pour être accordées. Par exemple, le superposition d'autres fenêtres (SYSTEM_ALERT_WINDOW) ou la modification des paramètres système (WRITE_SETTINGS). Elles ne relèvent ni de normal ni de dangereux.

Dans le manifeste de l'application, toutes les autorisations nécessaires sont demandées :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.CAMERA" />

    <application
        ...
        >
        ...
    </application>
</manifest>

La demande d'autorisations dangereuses s'effectue en temps d'exécution :

// Exemple de demande d'autorisation pour lire les contacts
if (ContextCompat.checkSelfPermission(this,
        Manifest.permission.READ_CONTACTS)
    != PackageManager.PERMISSION_GRANTED) {

    ActivityCompat.requestPermissions(this,
        arrayOf(Manifest.permission.READ_CONTACTS),
        MY_PERMISSIONS_REQUEST_READ_CONTACTS)

} else {
    // L'autorisation a déjà été accordée, on peut effectuer l'opération
}