entfernt. Wenn Benutzer die Berechtigung erteilen, wird ein Hintergrunddienst erstellt, der die Verfolgung von Benutzerstandorten startet.Anwendung stürzt ab, wenn Benutzer Anwendungsgenehmigung aus der Einstellung
Der Hintergrunddienst verfolgt den Standort des Benutzers, selbst nachdem der Benutzer die Anwendung zerstört hat.
Aber wenn Benutzer auf Anwendungseinstellungen geht und Standort entfernen Erlaubnis dann abstürzt Service und gibt folgende Fehlermeldung,
java.lang.SecurityException: Kunde muss ACCESS_COARSE_LOCATION oder ACCESS_FINE_LOCATION Erlaubnis irgendwelche Lage Operationen auszuführen.
Der Dienst wird nach jeweils 10 Sekunden, führen Sie mich freundlich, wie dieser Dienst in Laufen zu überprüfen, dass es entweder Berechtigungen hat oder nicht, denn nach alle 10 Sekunden den Dienst läuft und ruft onLocationChanged
Methode.
public class UpdateService extends Service implements
LocationListener,
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener {
@Override
public void onCreate() {
super.onCreate();
if (isGooglePlayServicesAvailable()) {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mGoogleApiClient.connect();
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "onStartCommand: ");
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(10000);
mLocationRequest.setFastestInterval(10000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
super.onStartCommand(intent, flags, startId);
return START_STICKY ;
}
@Override
public void onLocationChanged(Location location) {
saveLocationand(String.valueOf(location.getLatitude()), String.valueOf(location.getLongitude()));
}
EDIT:
Dies ist, wie ich überprüfen Erlaubnis in Anwendungsstart:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int permissionCheck = ContextCompat.checkSelfPermission(MainActivity.this,
android.Manifest.permission.ACCESS_FINE_LOCATION);
if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
showGPSDisabledAlertToUser();
}
startService(new Intent(MainActivity.this, UpdateService.class));
} else
checkLocationPermission();
}
Es ist aber offensichtlich, wenn Sie 'location permission entfernen' als app nicht funktioniert. –