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 に答える