Problème d'autorisation Android 6 (M) (créer le répertoire ne fonctionne pas)
J'ai ce code pour créer un répertoire pour l'enregistrement des images:
File storageDir = null;
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
storageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "myphoto");
if (!storageDir.mkdirs()) {
if (!storageDir.exists()){
Log.d("photo", "failed to create directory");
return null;
}
}
}
return storageDir;
storeDir retourne "/storage/emulated/0/Pictures/myphoto/"
ci-dessous android 6 et sur android 6 il retourne null
.
J'ai l'autorisation de <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
buildToolVersion 23
targetSdkVersion 23
Comment réparer?
source d'informationauteur Jemshit Iskenderov
Vous devez vous connecter pour publier un commentaire.
@CommonsWare répondu, il est temps d'exécution de l'autorisation de demander concept sur Android M, donc dans la nouvelle approche, les autorisations ne sont pas demandé lors de l'installation de l'application, mais lorsque vous essayez d'utiliser la fonctionnalité spécifique du téléphone qui demande l'autorisation, au moment de l'exécution. Plus tard peut désactiver l'autorisation de
phone settings->app->yourapp->permissions
. Donc vous devez vérifier avant de faire quelque chose avec cette autorisation, et demander à l'utilisateur:Vous exécutez sur un Android 6.0+ environnement et vous avez un
targetSdkVersion
de 23.Dans ce cas,
WRITE_EXTERNAL_STORAGE
fait partie de le Android 6.0 runtime système d'autorisation. Soit réviser votre application à participer à ce système, ou déposez vostargetSdkVersion
en dessous de 23.Vous devez obtenir une autorisation pour ce travail comme:
pour faire impliment ce code:
bonne chance!!!
Essayer ce code.