我在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上。