From 3910837d1aa3308738351c91208fa3b0d7ec1710 Mon Sep 17 00:00:00 2001
From: v_schaefer <{ID}+{username}@users.noreply.github.com>
Date: Tue, 8 Aug 2023 10:35:13 +0200
Subject: [PATCH] Fix: GPS Access denied when phone in standby
Added ACCESS_BACKGROUND_LOCATION permission to access GPS while phone is in standby. This is necessary for situations where the PublicAPI is triggered to start a record from an external device like a smartwatch.
---
README.md | 3 ++-
src/main/AndroidManifest.xml | 1 +
.../de/dennisguse/opentracks/util/PermissionRequester.java | 2 +-
3 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 471620e6f..a0890cf09 100644
--- a/README.md
+++ b/README.md
@@ -94,8 +94,9 @@ OpenTracks can be used with [Gadgetbridge](https://www.gadgetbridge.org/):
* __No in-app analytics__
* __No use of Google Play Services__
-__Only required permission:__
+__Only required permissions:__
* _ACCESS_FINE_LOCATION_: required to use the GPS.
+* _ACCESS_BACKGROUND_LOCATION_: required to start recording with GPS while phone is in standby. (e.g. when triggered by Public API from an external device)
### Public API
diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index 79e391421..07defc13a 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -46,6 +46,7 @@ limitations under the License.
+
diff --git a/src/main/java/de/dennisguse/opentracks/util/PermissionRequester.java b/src/main/java/de/dennisguse/opentracks/util/PermissionRequester.java
index 031b7ab47..625813732 100644
--- a/src/main/java/de/dennisguse/opentracks/util/PermissionRequester.java
+++ b/src/main/java/de/dennisguse/opentracks/util/PermissionRequester.java
@@ -57,7 +57,7 @@ public class PermissionRequester {
locationPermissionRequest.launch(permissions.toArray(permissions.toArray(new String[0])));
}
- private static final List GPS_PERMISSION = List.of(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION);
+ private static final List GPS_PERMISSION = List.of(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_BACKGROUND_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION);
private static final List BLUETOOTH_PERMISSIONS;