5

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

但是,ICS URI 将包含uriString类似 :的内容content://com.google.android.gallery3d.provider/picasa/item/12312312312312

并运行getRealPathFromURI(theURI)返回null

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

感谢您的建议

编辑:

似乎我在寻找错误的问题......

在下面的链接中发现了问题......这几乎是我期望我需要做的。相当烦人的 google/android 并没有更优雅地处理这个问题。

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

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

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

  3. 用户选择了 Picasa 图像并且设备运行的是 Android 3.0 及更高版本

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

4

1 回答 1

8

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

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

InputStream inStream = getContentResolver().openInputStream(theUri);
Bitmap bitmap = BitmapFactory.decodeStream(is);
于 2015-03-19T10:13:20.047 回答