Ludovic ROLAND - Le blog

Blog technique sur mes expériences de développeur

Les permissions sous android (2/6) : les différentes permissions

| Comments

Dans le chapitre précédent, nous avons vu que l’on distingue deux types de permissions :

  • les permissions normales ;
  • les permissions dangereuses.

Dans ce chapitre, je vous propose de revenir sur ces deux types de permissions et d’étudier plus précisément ce qui les différencie.

Plan

Les permissions normales

Une permission dite normale est une permission qui ne présente aucun risque pour l’utilisateur que ça soit d’un point de vue sécurité ou vie privée. a l’image de ce qui se faisait avant Android 6.0 les permissions qualifiées de normales sont automatiquement acceptées par l’utilisateur à l’installation de l’application et, même sous Android 6.0, ne peuvent pas être révoquées. Cela signifie que même depuis l’écran dédié dans le gestionnaire l’application, l’utilisateur n’a pas la possibilité d’activer ou désactiver une telle permission.

En tant que développeur, comment savoir qu’une permission est normale ?

Tout simplement en lisant la documentation. ;)

Comme je suis gentil, je vous propose ci-dessous la liste des permissions considérées comme normales par Android.

Permission
ACCESS_LOCATION_EXTRA_COMMANDS
ACCESS_NETWORK_STATE
ACCESS_NOTIFICATION_POLICY
ACCESS_WIFI_STATE
BLUETOOTH
BLUETOOTH_ADMIN
BROADCAST_STICKY
CHANGE_NETWORK_STATE
CHANGE_WIFI_MULTICAST_STATE
CHANGE_WIFI_STATE
DISABLE_KEYGUARD
EXPAND_STATUS_BAR
GET_PACKAGE_SIZE
INTERNET
KILL_BACKGROUND_PROCESSES
MODIFY_AUDIO_SETTINGS
NFC
READ_SYNC_SETTINGS
READ_SYNC_STATS
RECEIVE_BOOT_COMPLETED
REORDER_TASKS
REQUEST_INSTALL_PACKAGES
SET_TIME_ZONE
SET_WALLPAPER
SET_WALLPAPER_HINTS
TRANSMIT_IR
USE_FINGERPRINT
VIBRATE
WAKE_LOCK
WRITE_SYNC_SETTINGS
SET_ALARM
INSTALL_SHORTCUT
UNINSTALL_SHORTCUT

Comme vous pouvez le constater, accéder à internet ne nécessite pas une demande expressive à l’utilisateur ce qui, entre nous, est une bonne chose. ;)

Les permissions dangereuses

Une permission dite dangereuse, s’oppose à une permission dite normale puisqu’elle présente un risque potentiel pour l’utilisateur que ça soit d’un point de vue sécurité ou vie privée.

Le risque est-il vraiment présent ?

Bien évidemment !

Parmi ces permissions dangereuses, vous trouverez des permissions capables d’accéder à l’espace de stockage du téléphone et donc potentiellement de supprimer vos données comme vos photos ou vos musiques.

Une fois de plus, je tiens à mettre l’accent que parfois, ces permissions dangereuses ne sont pas utilisées de manière abusive et sont nécessaires au bon fonctionnement de l’application. Est-ce qu’une application de cartographie sans géolocalisation serait aussi utile ? Est-ce qu’une application permettant de recevoir et envoyer des mails serait aussi pratique sans un accès aux adresses e-mails de vos contacts pour vous les proposer en auto-complétion ?

A l’instar des permissions normales qui sont automatiquement acceptées par l’utilisateur à l’installation de l’application et qui ne peuvent pas être révoquées, les permissions dangereuses doivent explicitement être autorisées par l’utilisateur et peuvent à tout moment être autorisées ou au contraire refusées.

Du coup je dois demander plusieurs autorisations si je souhaite lire et écrire dans la base de données des SMS de l’utilisateur ?

Pas tout à fait. En réalité, les permissions dangereuses sont regroupées par groupe. Par exemple, le groupe “calendrier” regroupe l’ensemble des permissions permettant d’interagir avec le calendrier de l’utilisateur, à savoir :

  • lire les événements ;
  • créer un événement.

La demande d’autorisation des permissions se fera donc toujours via le groupe. Aussi, vous ne demanderez jamais si vous pouvez lire les SMS de l’utilisateur, vous lui demanderez simplement si vous pouvez accéder à ses SMS. En cas de réponse positive, vous pourrez alors :

  • envoyer un SMS ;
  • recevoir un SMS ;
  • lire un SMS ;
  • etc.

Autoriser un groupe de permission c’est donc autoriser toutes les permissions de ce groupe. Il n’est absolument pas possible de cibler une permission particulière. Même chose pour la désactivation des permissions via le gestionnaire d’applications du système d’exploitation. Comme en témoigne la capture d’écran suivante, il n’y a qu’une ligne globale pour chaque pictogramme qui représente alors un groupe.

En tant que développeur, comment connaître les permissions et leur groupe associé ?

Encore une fois, en lisant la documentation. ;)

Voici tout de même un récapitulatif de ce que vous trouverez dans la documentation :

Groupe Permissions
CALENDAR
  • READ_CALENDAR
  • WRITE_CALENDAR
CAMERA
  • CAMERA
CONTACTS
  • READ_CONTACTS
  • WRITE_CONTACTS
  • GET_ACCOUNTS
LOCATION
  • ACCESS_FINE_LOCATION
  • ACCESS_COARSE_LOCATION
PHONE
  • READ_PHONE_STATE
  • CALL_PHONE
  • READ_CALL_LOG
  • WRITE_CALL_LOG
  • ADD_VOICEMAIL
  • USE_SIP
  • PROCESS_OUTGOING_CALLS
SENSORS
  • BODY_SENSORS
SMS
  • SEND_SMS
  • RECEIVE_SMS
  • READ_SMS
  • RECEIVE_WAP_PUSH
  • RECEIVE_MMS
STORAGE
  • READ_EXTERNAL_STORAGE
  • WRITE_EXTERNAL_STORAGE

A la lecture de ce tableau, nous pouvons donc conclure qu’il existe neuf cas dans lesquels demander une autorisation à l’utilisateur sera strictement obligatoire :

  1. l’accès au calendrier ;
  2. l’accès à l’appareil photo ;
  3. l’accès aux contacts ;
  4. l’accès au GPS ;
  5. l’accès au microphone ;
  6. l’accès aux fonctionnalités d’appel ;
  7. l’accès aux sensors ;
  8. l’accès aux SMS ;
  9. l’accès à l’espace de stockage.

En résumé

  • Les permissions normales ne présentent aucun risque pour l’utilisateur.
  • Les permissions normales sont acceptées automatiquement par l’utilisateur à l’installation de l’application.
  • L’utilisation d’une permission normale par une application ne peut pas être révoquée par l’utilisateur.
  • Les permissions dangereuses présentent potentiellement un risque pour l’utilisateur.
  • L’utilisation d’une permission dangereuse par une application doit être explicitement autorisée par l’utilisateur.
  • L’utilisation d’une permission dangereuse par une application peut être révoquée à tout moment par l’utilisateur.

A lire aussi…

Comments