From 7ab45a9d889b068e3dd848abb0836290cd9f3816 Mon Sep 17 00:00:00 2001 From: Martin Carpella Date: Wed, 28 Mar 2018 23:04:25 +0200 Subject: [PATCH] Request ACCESS_COARSE_LOCATION on Android 8.1 (fixes #999) --- app/src/main/AndroidManifest.xml | 2 ++ .../activities/SettingsActivity.java | 22 +++++++++++++++++++ .../syncthingandroid/service/Constants.java | 6 +++++ .../service/DeviceStateHolder.java | 5 +++++ .../service/SyncthingService.java | 5 +++++ .../views/WifiSsidPreference.java | 20 +++++++++++++++++ app/src/main/res/values/strings.xml | 5 +++++ 7 files changed, 65 insertions(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0b21961a..aa642171 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -14,6 +14,8 @@ + + = Build.VERSION_CODES.O_MR1) { + if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + if (getContext() instanceof Activity) { + Activity activity = (Activity) getContext(); + ActivityCompat.requestPermissions(activity, new String[] { Manifest.permission.ACCESS_COARSE_LOCATION }, Constants.PERM_REQ_ACCESS_COARSE_LOCATION); + this.getDialog().dismiss(); // wait for result + } else { + Toast.makeText(getContext(), R.string.sync_only_wifi_ssids_need_to_grant_location_permission, Toast.LENGTH_LONG).show(); + } + } + } } /** diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d8ef5a0b..37d33f43 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -264,6 +264,11 @@ Please report any problems you encounter via Github. Please turn on WiFi to select networks. + You need to grant LOCATION permission to use this feature. + + Permission required + Starting with Android 8.1, location access is required to be able to read the WiFi\'s name. You can use this feature only if you grant this permission. + Respect Android battery saving setting Disable Syncthing if battery saving is active