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を使用するだけで、本当は出来るような気はするのですが、

やり方が分からなかったので、実際のファイルパスを取得してしまいました。

 

うまいやり方が他にあったら教えて頂けたらとおもいます。

関連する記事:

Facebookでコメント

コメント

  1. コメント 0

  1. トラックバック 0

*

return top