Sunday, April 24, 2011

Convert URI to real path format

In the exercises "Select Image using Android build-in Gallery" ad "Display Gallery selected image using BitmapFactory", the uri returned from build-in Gallery app is in the format of "content://media/external/images/...". To convert it to the real path format (eg. /mnt/sdcard/dropbox/Eric/....png), the following function can be used.

 public String getRealPathFromURI(Uri contentUri) {
       String[] proj = { MediaStore.Images.Media.DATA };
       Cursor cursor = managedQuery(contentUri, proj, null, null, null);
       int column_index
  = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
       cursor.moveToFirst();
       return cursor.getString(column_index);
   }


in real path format

Related: Convert between Uri and file path, and load Bitmap from.

4 comments:

Dananx Papayas said...

hey, nice tutorial :) if convert real path format to content uri.. how? help me please :(

Erik said...

hello Dananx Papayas,

I think it have no perfect solution for your need. In my understanding, uri handle files in MediaStore only. Not all file are kept in Mediastore, so may be you cannot get coresponding uri.

May be you have to implement a method to search mediastore for a specified file.

Erik said...

hello hello Dananx Papayas,

please read Convert between Uri and file path, and load Bitmap from.

Pratap Kumar said...

Hi , I am able to convert content uri to real path for images.

How to get real path for other formats files like (.txt , .pdf, .xls , .doc) ?


Thanks,
Pratap