【发布时间】:2023-04-08 19:54:01
【问题描述】:
我正在处理一项活动和相关任务,允许用户从图库中选择一张图片用作他们的个人资料图片。一旦做出选择,图像就会通过其 API 上传到 Web 服务器。我有这个来自画廊的工作常规图像。但是,如果所选图片来自 Picasa 网络相册,则不会返回任何内容。
我做了很多调试,把问题缩小到这个方法。
public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
//cursor is null for picasa images
if(cursor!=null)
{
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
else return null;
}
Picasa 图像返回空光标。但是,MediaStore.Images.Media.DATA 对它们来说不为空。它只返回一个#id,所以我猜测该地址没有实际的位图数据。 Picasa 图像是否完全存储在设备本地?
我还从文档中注意到 MediaStore.Images.ImageColumns.PICASA_ID 存在。此值适用于选定的 picasa 图片,但不适用于其他图库图片。我在想我可以使用这个值来获取图像的 URL,如果它没有存储在本地,但我在任何地方都找不到关于它的任何信息。
【问题讨论】:
-
这里是 dsk 8-13 的完整、更准确的工作代码:dimitar.me/…