メディアストアのURIからファイル名とパスを取得する 質問する

メディアストアのURIからファイル名とパスを取得する 質問する

メディアストアの画像選択から戻り値がありonActivityResult、以下を使用して画像の URI を取得できます。

Uri selectedImage = data.getData();

これを文字列に変換すると次のようになります。

content://media/external/images/media/47

またはパスに次のものを指定します:

/external/images/media/47

しかし、どこかにコピーせずにイメージをビットマップにロードしたいので、これを絶対パスに変換する方法が見つからないようです。URI とコンテンツ リゾルバーを使用してこれを行うことができることは知っていますが、電話機を再起動すると壊れるようですMediaStore。再起動間で番号が同じままにならないのだと思います。

ベストアンサー1

以下の API 19 では、次のコードを使用して URI からファイル パスを取得します。

public String getRealPathFromURI(Context context, Uri contentUri) {
  Cursor cursor = null;
  try { 
    String[] proj = { MediaStore.Images.Media.DATA };
    cursor = context.getContentResolver().query(contentUri,  proj, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
  } finally {
    if (cursor != null) {
      cursor.close();
    }
  }
}

おすすめ記事