Ludovic ROLAND

Blog technique sur mes expériences de développeur.

Les permissions sous Android (6/6) : Prendre en compte une politique de sécurité particulière

8 mai 2016

Afin de terminer ce cours, nous allons nous tourner vers la notion de politique de sécurité. Sur Android, il est possible de déterminer des politiques de sécurité limitant alors les possibilités du terminal.

Par exemple, une entreprise qui fournit des téléphones professionnels à ses employés peut décider de bloquer l’installation de nouvelles applications ou peut décider de ne pas permettre à l’utilisateur du terminal d’accepter certaines permissions afin de protéger les données du téléphone.

Nous allons donc apprendre à travailler avec cette contrainte afin de ne pas demander à un utilisateur une permission qu’il ne pourra pas autoriser.

Plan

Savoir si une permission n’est pas autorisée par la politique de sécurité particulière

Savoir si une permission est autorisée par la politique de sécurité est relativement simple puisqu’il convient d’appeler une seule méthode. Il s’agit de la méthode isPermissionRevokedByPolicy de la classe PackageManager. Cette méthode accepte deux paramètres :

  • la permission à tester ;
  • le nom de package de votre application.

Cette méthode renvoie alors deux valeurs possibles :

  • true si la permission n’est pas autorisée ;
  • false si la permission est autorisée.

Voici un exemple d’appel dans le cadre d’un fragment :

final boolean isPermissionRevoked = getContext().getPackageManager().isPermissionRevokedByPolicy(permission.CALL_PHONE, getContext().getPackageName());

Si l’on se penche sur la documentation de cette méthode, on remarque qu’elle est arrivée avec l’API 23 du SDK Android et qu’elle n’est pas rétro-compatible avec les anciennes versions du SDK. Cela signifie qu’il convient de conditionner son utilisation :

final boolean isPermissionRevoked;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
  isPermissionRevoked = getContext().getPackageManager().isPermissionRevokedByPolicy(permission.CALL_PHONE, getContext().getPackageName());
}
else
{
  isPermissionRevoked = false;
}

En fonction de la valeur de retour de la méthode isPermissionRevokedByPolicy, vous pourrez alors dérouler ou non ce que nous avons vu dans les chapitres précédents. ;)

En résumé

  • Sur les terminaux sous Android 6.0 et plus, avant de demander une autorisation pour une permission particulière, il convient de vérifier que celle-ci n’est pas refusée d’office par une politique de sécurité particulière.

Commentaires