I am testing my app on android against Marshmallow image and I have problems accessing files in my ExternalStorageDirectory.
So I asked user for WRITE_EXTERNAL_STORAGE permission when initializing app for the first time (I can see in settings that this permission is still granted) but when I try to access this file in my App I get
E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/.appname/imgdir/XXX.png: open failed: EACCES (Permission denied)
I checked that file exists using adb shell. How can I read this file ?
Edit : More details
Code that fails :
String fileName= entity.getId()+".png";
File imgFile = new File(Environment.getExternalStorageDirectory() + IMG_DIR + fileName);
if(imgFile.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
asset = createAssetFromBitmap(myBitmap);
On the first start of the app I am running following code :
if (ContextCompat.checkSelfPermission(this,
android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
in other place I do something similar :
File folder = new File(Environment.getExternalStorageDirectory() + AssetsUtil.WALLPAPER_DIR);
if (!folder.exists())
return wallpapers;
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
and it crush as well listOfFiles is null (while it works fine in android < 6.0)
thanks
W.