L'essentiel est expliqué sur Everything every Android Developer must know about new Android's Runtime Permission

Voyez les System Permissions - Normal and Dangerous Permissions

Au changement des permission a chaud avec l'application déjà lancée :

  • Allow->Deny => Relance
  • Deny->Allow => Ne relance pas l'app

PackageManager.PERMISSION_GRANTED PackageManager.PERMISSION_DENIED

// READ_EXTERNAL_STORAGE API level 16 // WRITE_EXTERNAL_STORAGE API level 4

Avec un téléphone level 15 Manifest.permission.READ_EXTERNAL_STORAGE retourne false !

Build.VERSION.SDK_INT >= Build.VERSION_CODES.M; // 23

           String permissions = {"BIDON1", Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
           ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE);
           ActivityCompat.requestPermissions(activity, permissions);
           ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.READ_EXTERNAL_STORAGE);

Quelle méthode fonction utilise la permission ?

Par exemple http://pscout.csl.toronto.edu/downl...

Permission:android.permission.CAMERA
416 Callers:
<android.hardware.Camera: android.hardware.Camera open()> (1)
<com.android.wallpaper.walkaround.WalkAroundWallpaper: void startCamera()> (1)
<com.android.wallpaper.walkaround.WalkAroundWallpaper: void access$200(com.android.wallpaper.walkaround.WalkAroundWallpaper)> (2)
<com.android.wallpaper.walkaround.WalkAroundWallpaper$WalkAroundEngine: void onSurfaceCreated(android.view.SurfaceHolder)> (1)
<com.android.wallpaper.walkaround.WalkAroundWallpaper$WalkAroundEngine: void onVisibilityChanged(boolean)> (1)
<android.hardware.Camera: void native_setup(java.lang.Object)> ()
...