0

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.

wonglik
  • 1,043
  • 4
  • 18
  • 36

0 Answers0