0

我正在尝试从 Android 设备图库中读取照片以显示在我的应用中。

我的应用程序允许用户从图库中选择图像,并且 onActivityResult() 方法中的此代码保存文件名以供以后使用:

if (resultCode == Activity.RESULT_OK) {
      String[] filePathColumn = {MediaStore.Images.Media.DATA};

      Cursor cursor = getActivity().getContentResolver().query(data.getData(), filePathColumn, null, null, null);
      cursor.moveToFirst();

      int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
      String filename = cursor.getString(columnIndex);
      cursor.close();
}

然后我稍后尝试在另一个活动中显示照片,如下所示:

  ImageView photoImageView = (ImageView) itemView.findViewById(R.id.photoImageView);
  Uri uri = Uri.fromFile(new File(photoFilename));
  Log.i("AddInformationDialog", "URI found: " + uri);
  photoImageView.setImageURI(uri)

但是我收到了这个 Permission Denied 错误:

WARN/ImageView(14618): Unable to open content: file:///mnt/sdcard/dcim/Camera/2012-05-31_09-37-03_660.jpg
    java.io.FileNotFoundException: /mnt/sdcard/dcim/Camera/2012-05-31_09-37-03_660.jpg (Permission denied)
    at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)

我查看了清单权限,并没有看到明确允许应用程序从文件系统读取的权限。我错过了什么?

提前谢谢。

4

1 回答 1

0

改写

我无法重新创建您的错误,可能是 Droid Bionic 特定问题。我能想到的唯一事情是:该文件不允许读取访问,或者它有一个锁定阻止读取。这是在黑暗中拍摄的:

  ImageView photoImageView = (ImageView) itemView.findViewById(R.id.photoImageView);
  File file = new File(photoFilename);
  file.setReadable(true);
  Uri uri = Uri.fromFile(file);
  Log.i("AddInformationDialog", "URI found: " + uri);
  photoImageView.setImageURI(uri);
于 2012-06-01T21:37:35.440 回答