Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android getRealPathFromURI()不使用ICS&;基于Picasa的图像_Android_Android Gallery_Picasa - Fatal编程技术网

Android getRealPathFromURI()不使用ICS&;基于Picasa的图像

Android getRealPathFromURI()不使用ICS&;基于Picasa的图像,android,android-gallery,picasa,Android,Android Gallery,Picasa,我正在尝试获取图像的本地路径,以便将其上载到服务器。当使用pre-ICS时,它将通过getRealPathFromURI(theURI) 但是,对于ICS,URI将包含一个uriString,类似于:content://com.google.android.gallery3d.provider/picasa/item/12312312312312 运行getRealPathFromURI(theURI)返回null 我现在是否需要提取上述uriString并通过API手动下载图像(如果我检测到它

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

但是,对于ICS,URI将包含一个
uriString
,类似于:
content://com.google.android.gallery3d.provider/picasa/item/12312312312312

运行
getRealPathFromURI(theURI)
返回
null

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

谢谢你的建议

编辑:

似乎我在寻找一个错误的问题

在下面的链接中发现问题。。。这正是我所期望的我需要做的。相当恼人的谷歌/安卓没有更优雅地处理这个问题

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

  • 用户选择了一个本地图像文件

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

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


  • 这就是我在运行安卓4.0+的设备上发现的

    作为示例,您给出的ICS URI是一个带有content://scheme的URI,因此应该有一个ContentProvider来负责这一点。 因此,getRealPathFromURI()使用的技巧有什么用途?只需让ContentResolver为您完成以下工作:

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

    这个链接非常有用。我们知道在使用谷歌硬盘时有一个文件吗?我猜ContentResolver的目的是对数据源进行抽象。您不需要知道数据在哪里,也不需要知道如何获取数据。可能是一个文件。可能是来自谷歌硬盘的数据。你不在乎。