apache / cordova-plugin-camera

Apache Cordova Plugin camera
https://cordova.apache.org/
Apache License 2.0
966 stars 1.55k forks source link

Android 14 - Exif not being returned from the camera #916

Open JohnCastle4 opened 23 hours ago

JohnCastle4 commented 23 hours ago

Bug Report

Problem

What is expected to happen?

Exif data is returned - including geolocation

What does actually happen?

On Android 11 it works fine. On Android 14, geolocation EXIF information is missing.

Information

Command or Code

Environment, Platform, Device

Galaxy Tab A for Android 11. Galaxy Tab A9 for Android 14.

Version information

Cordova-Android : 13.0.0 Cordova-Camera_Plugin: 7.0.0

Checklist

JohnCastle4 commented 22 hours ago

I have a suspicion that the Android OS has locked it down so the location permission can't be passed from the Cordova application to the camera. Can you confirm this is the case? Exif location information even seems to be missing when picking from the gallery.

breautek commented 20 hours ago

Are you able to confirm if a particular image has location information in the exif by some other means? (Perhaps by pulling the image directly over ADB or over USB)

Normally the geolocation information is provided only if the underlying camera plugin adds it when the image was captured. The camera application itself would need the geolocation permissions granted for it to do this. Images in the gallery could also come from any source that may or may not have added geolocation information. So if the image itself lacks the geolocation exif data, then naturally it won't be available in cordova either.

When it comes to android changes, a good place to start is:

I haven't looked through them but if there are intended behaviour changes at the android SDK level, it should be noted in one of those links.

JohnCastle4 commented 1 hour ago

Taking from the gallery I can confirm that when I copy the file locally from DCIM, the exif location information is present, but if I select the same picture from the gallery in the application the location information is not present when the camera launcher reads the EXIF. It is present on Android 11, but not Android 14. So Camera is working fine on its own, it's processing through the camera plugin that isn't working. I've been trying to pin down which Android change is affecting the location permissions and, it's not obvious to me.