android - getRealPathFromURI() 不适用于基于 ICS 和 Picasa 的图像

标签 android android-gallery picasa

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

在 android 设备中获取标准路径

然而,对于 ICS URI 将包含一个 uriString,例如:content://com.google.android.gallery3d.provider/picasa/item/12312312312312

并运行 getRealPathFromURI(theURI) 返回 null

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

谢谢你的建议

编辑:

看来我在搜索错误的问题...

在下面的链接中发现了问题...这几乎是我所期望的我需要做的。很烦人的谷歌/安卓没有更优雅地处理这个问题。

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

  1. 用户选择了本 map 片文件

  2. 用户选择了 Picasa 图片并且设备运行的是 Android 3.0 之前的版本

  3. 用户选择了一张 Picasa 图片,然后 该设备运行的是 Android 3.0 及更高版本

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

最佳答案

这是我在运行 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/

相关文章:

Android,文本/字体呈现为正方形

java - 设置字符码表在ESC/POS打印机中打印非拉丁字符

android - 在 webrtc org.webrtc.SurfaceViewRenderer 中调用 SurfaceViewRenderer.pauseVideo() 后如何恢复视频

android - android中的画廊类型 ScrollView

php - 如何使用 Picasa API 检索私有(private)相册

javascript - 如何仅使用纯 JavaScript 从页面获取所有输入元素?

Android - 将图像保存在特定文件夹中

android - 从 ImageView 获取图像

android - 在第三方服务器上验证 Android 的 authToken

google-apps-script - 如何在 Google Apps 脚本中使用 oAuth 2.0 来授权 Picasa 网络相册