getRealPathFromURI()不使用基于ICS和Picasa的图像

我正在尝试获取图像的本地路径,以便将其上传到服务器。 当使用pre ICS时,它将通过getRealPathFromURI(theURI)在Android设备中获得标准路径

但是,ICS URI将包含uriString ,如: content://com.google.android.gallery3d.provider/picasa/item/12312312312312

并运行getRealPathFromURI(theURI)返回null

我现在需要提取上面的uriString并通过API手动下载图像(如果我检测到它是Picasa图库图像)而不是本地存储的图像吗? 还是我完全错过了什么?

谢谢你的建议

编辑:

好像我在寻找错误的问题……

在下面的链接中发现了这个问题……这正是我所期望的我需要做的事情。 相当恼人的谷歌/ android没有更优雅地处理这个。

要正确处理从图库中获取图像,您需要处理三种情况:

  1. 用户选择了本地图像文件

  2. 用户选择了Picasa图片,设备正在运行3.0之前的Android版本

  3. 用户选择了Picasa图片,该设备正在运行Android 3.0及更高版本

How to get Picasa images using the Image Picker on Android devices running any OS version

这就是我在运行Android 4.0+的设备上发现的。

您提供的ICS URI是一个带有content:// scheme的URI,因此应该有一个ContentProvider负责。 因此,getRealPathFromURI()使用的技巧有什么用? 让ContentResolver为您完成这项工作:

 InputStream inStream = getContentResolver().openInputStream(theUri); Bitmap bitmap = BitmapFactory.decodeStream(is);