【问题标题】:getRealPathFromURI() not working with ICS & Picasa based imagesgetRealPathFromURI() 不适用于基于 ICS 和 Picasa 的图像
【发布时间】:2012-06-22 04:19:41
【问题描述】:

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

但是,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/

【问题讨论】:

  • 那个链接非常有用。

标签: android android-gallery picasa


【解决方案1】:

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

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

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

【讨论】:

  • 在使用 Google 云端硬盘时,我们知道文件吗?我猜 ContentResolver 的目的是对数据源进行抽象。您不需要知道数据在哪里,或者如何获取它。可能是一个文件。可能是来自 Google Drive 的数据。你不在乎。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
  • 1970-01-01
  • 1970-01-01
  • 2012-03-20
  • 2012-08-31
  • 1970-01-01
  • 2012-05-31
相关资源
最近更新 更多