我正在尝试获取图像的本地路径以便将其上传到服务器。使用 pre ICS 时,它将通过 getRealPathFromURI(theURI)
然而,对于 ICS URI 将包含一个 uriString
,例如:content://com.google.android.gallery3d.provider/picasa/item/12312312312312
。
并运行 getRealPathFromURI(theURI)
返回 null
我现在是否需要提取上述 uriString
并通过 API 手动下载图像(如果我检测到它是 Picasa 图库图像)而不是本地存储的图像?还是我完全错过了什么?
谢谢你的建议
编辑:
看来我在搜索错误的问题...
在下面的链接中发现了问题...这几乎是我所期望的我需要做的。很烦人的谷歌/安卓没有更优雅地处理这个问题。
要正确处理从图库中获取图像,您需要处理三种情况:
用户选择了本 map 片文件
用户选择了 Picasa 图片并且设备运行的是 Android 3.0 之前的版本
用户选择了一张 Picasa 图片,然后 该设备运行的是 Android 3.0 及更高版本
最佳答案
这是我在运行 Android 4.0+ 的设备上发现的。
您作为示例给出的 ICS URI 是一个带有 content://方案的 URI,因此应该有一个 ContentProvider 负责。 因此,getRealPathFromURI() 使用的技巧有什么用?让 ContentResolver 为您完成这项工作:
InputStream inStream = getContentResolver().openInputStream(theUri);
Bitmap bitmap = BitmapFactory.decodeStream(is);
关于android - getRealPathFromURI() 不适用于基于 ICS 和 Picasa 的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11150108/