Get File Path of Gallery Image

4 votes · 4 comments

This will allow you to take a URI given from the Gallery browser and convert it into a direct path to the file in the file system. I needed to get the exact path a chosen image was stored in for logging purposes. There may be better ways of doing this so your input is welcome.

raw ·
· download
// To open up a gallery browser Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, "Select Picture"),1); // To handle when an image is selected from the browser, add the following to your Activity @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { if (requestCode == 1) { // currImageURI is the global variable I'm using to hold the content:// URI of the image currImageURI = data.getData(); } } } // And to convert the image URI to the direct file system path of the image file public String getRealPathFromURI(Uri contentUri) { // can post image String [] proj={MediaStore.Images.Media.DATA}; Cursor cursor = managedQuery( contentUri, proj, // Which columns to return null, // WHERE clause; which rows to return (all rows) null, // WHERE clause selection arguments (none) null); // Order-by clause (ascending by name) int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); }
Add a comment


Nice snippet, but managedQuery is now deprecated. You only need to make a small change like this and it will be ok:

Cursor cursor = getContentResolver().query(contentUri,
Reply · Sept. 8, 2012, 11:51 a.m.

dude, i tried your code and it didn't work, the deprecated worked (still trying to find the substitute)

Reply · May 5, 2014, 8:41 p.m.

doesn't work with g+ pictures

Reply · March 12, 2014, 10 p.m.

Nice very nice... works perfectly

Reply · May 22, 2014, 9:23 a.m.