访问Android Marshmallow中的ExternalStorageDirectory中的文件。 EACCES(许可被拒绝)

时间:2016-02-28 17:59:23

标签: android android-6.0-marshmallow android-file

我在Android上测试我的应用程序与Marshmallow图像,我在访问ExternalStorageDirectory中的文件时遇到问题。

所以我在第一次初始化应用程序时询问用户WRITE_EXTERNAL_STORAGE权限(我可以在设置中看到仍然授予了此权限)但是当我尝试在我的应用程序中访问此文件时我得到了

E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/.appname/imgdir/XXX.png: open failed: EACCES (Permission denied)

我使用adb shell检查了该文件是否存在。我该如何阅读此文件?

编辑:更多详情

失败的代码:

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);

在应用程序的第一次启动时,我运行以下代码:

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);

在其他地方我做了类似的事情:

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++) {

并且它崩溃了listOfFiles是null(虽然它在android&lt; 6.0中工作正常)

感谢

W上。

0 个答案:

没有答案