NearestFavoriteStationsWidgetPermissionActivity: on Android 11+, request background location permission separate from location permission

This commit is contained in:
Andreas Schildbach 2022-08-23 14:23:39 +02:00
parent 619853a04a
commit 7634c116ae

View file

@ -20,12 +20,16 @@ package de.schildbach.oeffi.stations;
import android.Manifest; import android.Manifest;
import android.app.Activity; import android.app.Activity;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.Arrays; import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class NearestFavoriteStationsWidgetPermissionActivity extends Activity { public class NearestFavoriteStationsWidgetPermissionActivity extends Activity {
private static final Logger log = LoggerFactory.getLogger(NearestFavoriteStationsWidgetPermissionActivity.class); private static final Logger log = LoggerFactory.getLogger(NearestFavoriteStationsWidgetPermissionActivity.class);
@ -33,10 +37,14 @@ public class NearestFavoriteStationsWidgetPermissionActivity extends Activity {
@Override @Override
protected void onCreate(final Bundle savedInstanceState) { protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
final String[] permissions = { Manifest.permission.ACCESS_FINE_LOCATION, final List<String> permissions = new LinkedList<>();
Manifest.permission.ACCESS_BACKGROUND_LOCATION }; if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)
log.info("Requesting permissions: {}", Arrays.toString(permissions)); permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
ActivityCompat.requestPermissions(this, permissions, 0); if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_BACKGROUND_LOCATION) != PackageManager.PERMISSION_GRANTED)
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R || permissions.isEmpty())
permissions.add(Manifest.permission.ACCESS_BACKGROUND_LOCATION);
log.info("Requesting permissions: {}", permissions);
ActivityCompat.requestPermissions(this, permissions.toArray(new String[0]), 0);
} }
@Override @Override