diff --git a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java index cddd2cae0..b16a3b07e 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java @@ -27,7 +27,6 @@ import android.content.pm.PackageManager; import android.database.Cursor; import android.graphics.drawable.AnimatedVectorDrawable; import android.location.LocationManager; -import android.os.Build; import android.os.Bundle; import android.provider.Settings; import android.util.Log; @@ -393,24 +392,22 @@ public class TrackListActivity extends AbstractTrackDeleteActivity implements Co } private void requestGPSPermissions() { - if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { + if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED + && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { return; } ActivityResultLauncher locationPermissionRequest = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), result -> { Boolean fineLocationGranted = result.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false); - if (fineLocationGranted == null || !fineLocationGranted) { + Boolean coarseLocationGranted = result.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false); + if (fineLocationGranted == null || !fineLocationGranted + || coarseLocationGranted == null || !coarseLocationGranted) { Toast.makeText(this, R.string.permission_gps_failed, Toast.LENGTH_SHORT).show(); finish(); } } ); - String[] permissions; - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) { - permissions = new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}; - } else { - permissions = new String[]{Manifest.permission.ACCESS_FINE_LOCATION}; - } + String[] permissions = new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}; locationPermissionRequest.launch(permissions); } diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/DirectoryChooserActivity.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/DirectoryChooserActivity.java index 117d139b5..4f376e580 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/DirectoryChooserActivity.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/DirectoryChooserActivity.java @@ -113,7 +113,7 @@ public abstract class DirectoryChooserActivity extends AppCompatActivity { Uri directoryUri = resultData.getData(); PreferencesUtils.setDefaultExportDirectoryUri(sharedPreferences, this, directoryUri); - IntentUtils.persistDirectoryAccessPermission(getApplicationContext(), resultData, directoryUri); + IntentUtils.persistDirectoryAccessPermission(getApplicationContext(), directoryUri); break; case RESULT_CANCELED: PreferencesUtils.setDefaultExportDirectoryUri(sharedPreferences, this, null); diff --git a/src/main/java/de/dennisguse/opentracks/services/handlers/LocationHandler.java b/src/main/java/de/dennisguse/opentracks/services/handlers/LocationHandler.java index 808999189..379c4ad26 100644 --- a/src/main/java/de/dennisguse/opentracks/services/handlers/LocationHandler.java +++ b/src/main/java/de/dennisguse/opentracks/services/handlers/LocationHandler.java @@ -44,6 +44,8 @@ public class LocationHandler implements LocationListener, GpsStatus.GpsStatusLis gpsStatus.start(); } + @SuppressWarnings({"MissingPermission"}) + //TODO upgrade to AGP7.0.0/API31 started complaining about removeUpdates. public void onStop() { lastTrackPoint = null; if (locationManager != null) { diff --git a/src/main/java/de/dennisguse/opentracks/util/IntentUtils.java b/src/main/java/de/dennisguse/opentracks/util/IntentUtils.java index 10ad360d0..6775446fb 100644 --- a/src/main/java/de/dennisguse/opentracks/util/IntentUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/IntentUtils.java @@ -200,10 +200,8 @@ public class IntentUtils { return new Pair<>(intent, photoUri); } - public static void persistDirectoryAccessPermission(Context context, Intent resultData, Uri directoryUri) { - final int takeFlags = resultData.getFlags() - & (Intent.FLAG_GRANT_READ_URI_PERMISSION - | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); - context.getContentResolver().takePersistableUriPermission(directoryUri, takeFlags); + public static void persistDirectoryAccessPermission(Context context, Uri directoryUri) { + int flags = Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION; + context.getContentResolver().takePersistableUriPermission(directoryUri, flags); } }