Si vous avez développez une application Android pour une version antérieure à Marshmallow (6 - API 23), vous avez dû vous confronter à la problématique des permissions en tout genre (localisation GPS, Camera, Stockage...).
Comme vous le savez certainement les permissions avant Android Marshmallow été déclarées dans le fichier XML AndroidManifest.xml et l'utilisateur devait valider ou pas ces permissions lors de l'installation de l'application.
Prenons par exemple une permission classique pour utiliser la Camera :
<uses-permission android:name="android.permission.CAMERA" />
Si vous ciblez une version antérieure à Marshmallow, votre application marchera sans aucun soucis, par contre la nouvelle version d'android exige la vérification à l’exécution et non pas lors de l'installation, mais cela dépend aussi du type des permissions (normales ou dangereuses, je vous laisse lire tranquillement la doc des permissions pour bien comprendre la différence).
En bref, vous devez maintenant demander à l'utilisateur la permission d'utiliser par exemple la Camera que lorsque vous en avez vraiment besoin, une pop-up s'affichera pour que l'utilisateur valide ou pas votre action et vous devez ensuite gérer l'accord ou le refus de cette demande. On sent ici que Google a voulu appliquer la même pratique qu'Apple et ils ont bien raison.Passons maintenant au code, prenons par exemple une activité qui nécessite l'accès à la caméra, comme j'ai dit bien avant si vous ciblez une version antérieure à l'API 23 vous n'avez qu'a déclarer vos permissions dans l'AndroidManifest.XML et c'est terminé. Par contre maintenant on doit gérer cela différemment.Exemple :
public class CameraActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_camera); // Layout de notre activité requestPermissions(); // Demande de de la permission d'utiliser la Camera } protected void requestPermissions(){ if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, PERMISSION_CAMERA); else onPermissionsGranted(); } @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { if (requestCode == PERMISSION_CAMERA) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) onPermissionsGranted(); else onPermissionDenied(); } } protected void onPermissionsGranted(){ Log.e(TAG, "Yaaay !!! Permission Granted"); // ici vous avez accès à la camera :D Cool !! } protected void onPermissionDenied(){ Toast.makeText(this, "I can't take pictures without your permission :(", Toast.LENGTH_LONG).show(); // ici l'utilisateur a refusé votre demande :( } private static final int PERMISSION_CAMERA = 1; private static final String TAG = CameraActivity.class.getSimpleName(); }Ceci est juste un article informatif pour que vous mettez vos applications à jour, il ne s'agit nid'un cours ni d'un programme fonctionnel, pour plus d'information sur les nouvelles permissions d'Android Marshmallow vous pouvez visiter la documentation officielle.
Aucun commentaire:
Enregistrer un commentaire