AndroidでUriからファイルパスを取得する方法
AndroidでUriでファイルの情報をやりとりするのですが、
実際のFileパスを使用したい場合あるとおもいます。
そういう時に、どうしたらいいかを調べた内容です。
普通にUriからgetPathメソッドでPathを取得すると、
「/external/images/media/401」
のような形でパスの内容が取得されます。
これを実際のファイルパスである、
「/mnt/sdcard/Test_20111101_145318.jpg」
のような形で取得する為には、「ContentResolver」を使用する必要があります。
Uriからファイルパスを取得する実際の処理は以下のようになります。
/** * UriからPathへの変換処理 * @param uri * @return String */ public static String getPath(Context context, Uri uri) { ContentResolver contentResolver = context.getContentResolver(); String[] columns = { MediaStore.Images.Media.DATA }; Cursor cursor = contentResolver.query(uri, columns, null, null, null); cursor.moveToFirst(); String path = cursor.getString(0); cursor.close(); return path; }
これで、ファイルパスが取得できます。
これで、実際のファイルパスを使用して、ファイルの削除、コピー、移動などができます。
もしかするとこんなことしなくてもUriを使用するだけで、本当は出来るような気はするのですが、
やり方が分からなかったので、実際のファイルパスを取得してしまいました。
うまいやり方が他にあったら教えて頂けたらとおもいます。