Blog technique sur mes expériences de développeur.
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.
L’intégralité de ce cours est disponible dans le CourseLab OpenClassrooms !
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 :
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. ;)