views:

328

answers:

1

I have an onActivityResult returning from an mediastore image selection which I can get a URI for an image using the following:

  Uri selectedImage = data.getData();

Converting this to a string gives this:

  content://media/external/images/media/47

Or to a path gives:

  /external/images/media/47

However I can't seem to find a way to convert this into an absolute path, as I want to load the image into a bitmap without having to copy it somewhere. I know this can be done using the URI and content resolver but this seems to break on rebooting of the phone, I guess MediaStore doesn't keep its numbering the same between reboots.

+3  A: 
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);
    }
PercyPercy
AWESOME! this works perfectly thanks so much, been troubling me for ages.
stealthcopter