从Uri Android Lollipop获取路径名称

时间:2015-04-17 12:57:45

标签: android uri filepath

棒棒糖版。

我使用此code来确定来自Uri的文件路径。工作正常,但如果我从下载的应用程序中选择文件 - getRealPathFromURI_API19 功能对我不起作用。这个案例的整个ID等于/ document / 4,我的应用程序崩溃了。

好的,我对这个功能进行了一些更改" id"对于Uri" / document / 4"现在等于4,但函数返回null。

是否可以从任何应用程序获取所选图像的文件路径? 我需要ExifInterface的文件路径。

1 个答案:

答案 0 :(得分:0)

  

工作正常

仅针对您尝试的少数设备,针对您尝试过的一个文件源(MediaStore)。

  

是否可以从任何应用程序获取所选图像的文件路径?

没有。 A Uri is not a File。不要求任何Uri可转换为文件路径,因为Uri可能不代表文件,更不用说您的应用有权访问的文件。对于您来说,Uri是另一个应用程序拥有的内容的不透明地址,就像URL是Web服务器拥有的内容的不透明地址一样。而且,正如您无法将URL神奇地转换为可以使用的文件路径一样,您无法将Uri神奇地转换为可以使用的文件路径。

  

我需要ExifInterface的文件路径。

实际上,您需要阅读或可能编写与您认为指向包含这些标头的图像的Uri相关联的EXIF标头。虽然ExifInterface允许您这样做,但它是专为应用程序使用自己的图像而设计的,而不是来自第三方应用程序的图像。

您的选择是:

  • ContentResolver上使用openInputStream()Uri,并制作图片的本地副本,之后您可以使用ExifInterface

    < / LI>
  • 使用其他一些提供更多灵活性的EXIF代码。例如,the EXIF classes from the AOSP Mms app可以从InputStream

  • 中读取EXIF标题