【Android】Uriから画像のファイルパスを取得する方法

果たして需要があるかは分かりませんが、私はあったので備忘録としてまとめ。
Anrdoidアプリで、Uriから画像のファイルパスを取得する方法です。
参考にさせていただいたサイトは確かこちら。

ギャラリーからの画像読み込みでエラーが出るときの修正方法|Workpiles
http://workpiles.com/2014/07/android-gallary-intent/

 

実装方法は下記のとおりです。
関数になっているので、このままコピー&ペーストしていただければ動くかと思います。

private String getPictPath(Uri uri) {
    String id = DocumentsContract.getDocumentId(uri);
    String selection = "_id=?";
    String[] selectionArgs = new String[]{id.split(":")[1]};
    File file = null;

    Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[]{MediaStore.MediaColumns.DATA}, selection, selectionArgs, null);

    if (cursor != null && cursor.moveToFirst()) {
        file = new File(cursor.getString(0));
    }
    cursor.close();

    if(file != null){
        return file.getAbsolutePath();
    }
    return null;
}

getPictPath() の引数に、変換したい画像のUriを渡せばOKです。

 

以上、簡単ですが画像のUriからファイルパスを取得する方法でした。
実際に使う機会は多くはないと思いますが、参考にしていただければと思います。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG