Android 位图工厂:EACCS

Android 位图工厂:EACCS,android,android-permissions,android-bitmap,Android,Android Permissions,Android Bitmap,我已经花了将近一周的时间来解决这个问题,但因为我不能解决它,我会把它贴在这里。我的目标是将拍摄的照片保存为位图,并将其设置为ImageView OnactivityResult的方法: if (requestCode == CAMERA_CODE && resultCode == Activity.RESULT_OK) { Log.d("CameraDemo", "Pic saved"); System.out.pr

我已经花了将近一周的时间来解决这个问题,但因为我不能解决它,我会把它贴在这里。我的目标是将拍摄的照片保存为位图,并将其设置为
ImageView

OnactivityResult的
方法:

if (requestCode == CAMERA_CODE && resultCode == Activity.RESULT_OK) {
                Log.d("CameraDemo", "Pic saved");
                System.out.println("We are in resultCode Activity.Result_OK");
                //for thumbnail:
                //Bitmap bp = (Bitmap) data.getExtras().get("data");
                Bitmap bm = StorageController.readCardImage(activity.getCurrentCard().getUUID());
                mImageView.setImageBitmap(bm);
            }
readCardImage
-方法:

public static Bitmap readCardImage(final String uuid) {
    File storageDir = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES);
    File file = new File(storageDir, "JPEG_" + uuid + ".jpg");
    Bitmap bm = null;
    if (file.exists()) {
        System.out.println("Yes the File exists actually");

        bm = BitmapFactory.decodeFile(file.getAbsolutePath());
    } else {
        System.out.println("Uuuups Picture Image does not exist");
    }
    return bm;
}
public static File createCardImageFile(final String uuid) {
    File storageDir = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES);
    File image = null;
    try {
        image = new File(storageDir, "JPEG_" + uuid + ".jpg");

    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println("Image path to Save = " + image.getAbsolutePath());
    return image;

}
以及
createCardImage
-方法:

public static Bitmap readCardImage(final String uuid) {
    File storageDir = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES);
    File file = new File(storageDir, "JPEG_" + uuid + ".jpg");
    Bitmap bm = null;
    if (file.exists()) {
        System.out.println("Yes the File exists actually");

        bm = BitmapFactory.decodeFile(file.getAbsolutePath());
    } else {
        System.out.println("Uuuups Picture Image does not exist");
    }
    return bm;
}
public static File createCardImageFile(final String uuid) {
    File storageDir = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES);
    File image = null;
    try {
        image = new File(storageDir, "JPEG_" + uuid + ".jpg");

    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println("Image path to Save = " + image.getAbsolutePath());
    return image;

}
我会遇到什么错误?

E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/Pictures/JPEG_617d34d2-0388-4950-b5f9-d03686458fa6.jpg: open failed: EACCES (Permission denied)
到目前为止我试过什么?

E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/Pictures/JPEG_617d34d2-0388-4950-b5f9-d03686458fa6.jpg: open failed: EACCES (Permission denied)
  • 检查文件是否实际存在(是)
  • 检查createCard和saveCard是否具有相同的文件名(是)
  • 已授予手动权限并在清单中添加了权限(是)
  • 这太奇怪了,因为它可以和我的另一部手机一起使用,但不能在我的HTC上使用,也不能在模拟器上使用。 编辑:targetSdk是23