5

I'm trying to get the local path of a image in order to upload it to a server. When using pre ICS it would get a standard path within the android device via getRealPathFromURI(theURI)

However with ICS URI will contain a uriString as something like : content://com.google.android.gallery3d.provider/picasa/item/12312312312312.

and running getRealPathFromURI(theURI) returns null

Do I now need to extract the above uriString and manually download the image via the API (if i detect that its a Picasa gallery image) rather than one locally stored? or am I completely missing something?

thanks for any advice

EDIT:

seems i was searching on the wrong question...

found the problem in the below link... which is pretty much what I expected I'd need to do. Pretty annoying google/android didn't handle this more elegantly.

To properly handle fetching an image from the Gallery you need to handle three scenarios:

  1. The user selected a local image file

  2. The user selected a Picasa image and the device is running Android version prior to 3.0

  3. The user selected a Picasa image and the device is running Android version 3.0 and higher

http://dimitar.me/how-to-get-picasa-images-using-the-image-picker-on-android-devices-running-any-os-version/

wired00
  • 13,930
  • 7
  • 70
  • 73

1 Answers1

8

That's what I found out on device running Android 4.0+.

The ICS URI you gave as an example is an URI with content:// scheme, so there should be a ContentProvider responsible for that. Hence, what is the use of that tricks getRealPathFromURI() uses? Just let ContentResolver do this work for you:

InputStream inStream = getContentResolver().openInputStream(theUri);
Bitmap bitmap = BitmapFactory.decodeStream(is);
Darth Raven
  • 189
  • 4
  • 3
  • 1
    Do we know there *is* a file when using Google Drive? I'm guessing the purpose of ContentResolver is to make an abstraction out of data sources. You don't need to know where the data is, or how to fetch it. Could be a file. Could be data from Google Drive. You don't care. – Edward Falk Mar 31 '16 at 01:17