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.
// 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);
}
5 Comments
Nice snippet, but managedQuery is now deprecated. You only need to make a small change like this and it will be ok:
dude, i tried your code and it didn't work, the deprecated worked (still trying to find the substitute)
You have to supply a context as such:
doesn't work with g+ pictures
Nice very nice... works perfectly