? ? ? ??拍照前,如果相机开启了位置信息权限,便会在其 Exif 元数据中记录位置信息,由于此位置信息属于敏感信息,如果我们的应用使用了分区存储,系统会对应用隐藏这些位置信息,那么我们需要获取相关信息要怎么办呢?
1.targetSdkVersion=29时,在application中添加android:requestLegacyExternalStorage="true"即可
2.targetSdkVersion>29时,系统会忽略?android:requestLegacyExternalStorage标记,需要在清单文件中添加 ACCESS_MEDIA_LOCATION 权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
float[] latLong= new float[2];
// 需 ACCESS_MEDIA_LOCATION 权限
Uri photoUri = MediaStore.setRequireOriginal(uri);
InputStream stream = null;
try {
stream = getContentResolver().openInputStream(photoUri);
if (stream != null) {
ExifInterface exifInterface = new ExifInterface(stream);
//获取经纬度信息,第一个元素为纬度,第二个元素为经度
exifInterface.getLatLong(latLong);
stream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
|