棒棒糖版。
我使用此code来确定来自Uri的文件路径。工作正常,但如果我从下载的应用程序中选择文件 - getRealPathFromURI_API19 功能对我不起作用。这个案例的整个ID等于/ document / 4,我的应用程序崩溃了。
好的,我对这个功能进行了一些更改" id"对于Uri" / document / 4"现在等于4,但函数返回null。
是否可以从任何应用程序获取所选图像的文件路径? 我需要ExifInterface的文件路径。
答案 0 :(得分:0)
工作正常
仅针对您尝试的少数设备,针对您尝试过的一个文件源(MediaStore
)。
是否可以从任何应用程序获取所选图像的文件路径?
没有。 A Uri
is not a File
。不要求任何Uri
可转换为文件路径,因为Uri
可能不代表文件,更不用说您的应用有权访问的文件。对于您来说,Uri
是另一个应用程序拥有的内容的不透明地址,就像URL是Web服务器拥有的内容的不透明地址一样。而且,正如您无法将URL神奇地转换为可以使用的文件路径一样,您无法将Uri
神奇地转换为可以使用的文件路径。
我需要ExifInterface的文件路径。
实际上,您需要阅读或可能编写与您认为指向包含这些标头的图像的Uri
相关联的EXIF标头。虽然ExifInterface
允许您这样做,但它是专为应用程序使用自己的图像而设计的,而不是来自第三方应用程序的图像。
您的选择是:
在ContentResolver
上使用openInputStream()
和Uri
,并制作图片的本地副本,之后您可以使用ExifInterface
使用其他一些提供更多灵活性的EXIF代码。例如,the EXIF classes from the AOSP Mms app可以从InputStream