使用Uri-Android的完整信息/详细信息保存谷歌照片中的图像

使用Uri-Android的完整信息/详细信息保存谷歌照片中的图像,android,save-image,Android,Save Image,我正在使用ExiFinInterface,它需要图像路径从Uri获取纬度/经度等信息。我可以从Uri获取保存在设备上的图像的路径,并将其发送到ExiFinInterface以获取详细信息 然而,这不适用于谷歌照片云上的图像。从库中选择后,照片将自动下载,但ExiFinInterface无法检索任何信息,因为cursor.getString(索引)为空 因此,我尝试将图像保存到存储器中,如下所述: 然后,当我使用谷歌照片应用程序打开保存的文件时,我看不到位置详细信息。但是,如果我通过单击“保存”手

我正在使用ExiFinInterface,它需要图像路径从Uri获取纬度/经度等信息。我可以从Uri获取保存在设备上的图像的路径,并将其发送到ExiFinInterface以获取详细信息

然而,这不适用于谷歌照片云上的图像。从库中选择后,照片将自动下载,但ExiFinInterface无法检索任何信息,因为cursor.getString(索引)为空

因此,我尝试将图像保存到存储器中,如下所述:

然后,当我使用谷歌照片应用程序打开保存的文件时,我看不到位置详细信息。但是,如果我通过单击“保存”手动保存谷歌照片应用程序中的图像,该图像将显示位置详细信息

是否仍要在保存图像文件时保存图像详细信息

我正在使用ExiFinInterface,它需要图像路径从Uri获取纬度/经度等信息

您可以使用
ContentResolver
及其
openInputStream()
方法对
Uri
标识的内容获取
InputStream
。然后,将该
InputStream
传递给

请注意,不要求图像采用JPEG格式(如果有EXIF标记),也不要求JPEG图像具有地理标记

从库中选择后,照片将自动下载,但ExiFinInterface无法检索任何信息,因为cursor.getString(索引)为空

不需要指向一段内容(如照片)的
Uri
,就可以支持任何涉及
光标的内容

因此,我尝试将图像保存到存储器中,如下所述:从谷歌照片应用程序获取Uri路径

您可以将
InputStream
提供给
ExifInterface
,并用更少的代码获得相同的结果

然后,当我使用谷歌照片应用程序打开保存的文件时,我看不到位置详细信息

Uri
可能指向缺少您正在查找的EXIF标记的内容。也许谷歌照片会因为任何原因单独保留这些信息。这取决于创建谷歌照片的开发者

问题也可能在于如何手动测试


不管怎样,首先将
InputStream
直接传递到
ExifInterface
并以这种方式检查EXIF标记。也许您会得到更好的结果。

如果我错了,请纠正我,但InputStream是否确实保留了EXIF数据?如果流本身确实有数据,那么就有问题了,构造函数需要API 24。@MadDim:“如果我错了,请纠正我,但是InputStream确实保留了EXIF数据吗?”--是的。“构造器需要API 24”-您正在查看框架
ExifInterface
。千万不要使用它,因为它有安全问题。使用库
ExiFinInterface
(Android支持库或AndroidX,取决于您的设置)。非常感谢。我从未意识到有一个独立的依赖关系。