メディアストアの画像選択から戻り値があり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();
}
}
}