Répondre

4

Vous devez demander READ_EXTERNAL_STORAGE. Vous serez en mesure d'accéder à la galerie sans elle, mais si vous voulez faire quelque chose avec les médias que vous obtenez de la galerie, vous aurez besoin de l'autorisation READ.

Un test rapide sur ce qui se passe dans onActivityResult après une image a été choisi sous forme la galerie:

Permission refusée: lecture com.android.providers.media.MediaProvider contenu uri: // media/externe/images/médias de pid = 8405, uid = 10177 nécessite android.permission.READ_EXTERNAL_STORAGE ou grantUriPermission()

0

Pour obtenir l'autorisation personnalisée, vous pouvez utiliser l'autorisation d'exécution si vous utilisez Android 6.0 ou above.This le code peut vous aider.

Si votre application ne possède pas déjà l'autorisation dont il a besoin, l'application doit appel une des méthodes requestPermissions() pour demander les autorisations appropriées . Votre application transmet les autorisations qu'elle souhaite et également un code de requête d'entier que vous spécifiez pour identifier cette demande d'autorisation . Cette méthode fonctionne de manière asynchrone: elle renvoie immédiatement et, après que l'utilisateur a répondu à la boîte de dialogue, le système appelle la méthode de rappel de l'application avec les résultats, en transmettant le même code de requête que l'application a transmis à requestPermissions().

// Here, thisActivity is the current activity 
if (ContextCompat.checkSelfPermission(thisActivity, 
       Manifest.permission.READ_CONTACTS) 
     != PackageManager.PERMISSION_GRANTED) { 

    // Should we show an explanation? 
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, 
      Manifest.permission.READ_CONTACTS)) { 

     // Show an explanation to the user *asynchronously* -- don't block 
     // this thread waiting for the user's response! After the user 
     // sees the explanation, try again to request the permission. 

    } else { 

     // No explanation needed, we can request the permission. 

     ActivityCompat.requestPermissions(thisActivity, 
       new String[]{Manifest.permission.READ_CONTACTS}, 
       MY_PERMISSIONS_REQUEST_READ_CONTACTS); 

     // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an 
     // app-defined int constant. The callback method gets the 
     // result of the request. 
    } 
}  

To Know more about runtime permission

https://developer.android.com/training/permissions/requesting.html