2017-02-17 2 views
0

Ich versuche, alle aktiven Geofences bei meiner Aktivität zu löschen. HierLöschen Sie alle aktiven Geofence auf Aktivität schließen

ist der Code, ich verwende:

private PendingIntent getGeofencePendingIntent() { 
     Intent intent = new Intent(this, GeofenceService.class); 
     // We use FLAG_UPDATE_CURRENT so that we get the same pending intent back when calling addgeoFences() 
     return PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
    } 

@Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     unregisterReceiver(receiver); 
     //Setup permissions for location. 
     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED 
       && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      ActivityCompat.requestPermissions(
        this, 
        new String[]{ 
          Manifest.permission.ACCESS_COARSE_LOCATION, 
          Manifest.permission.ACCESS_FINE_LOCATION 
        }, 
        LOCATION_PERMISSION_CODE 
      ); 
     } else { 
      if (lm != null) 
       lm.removeUpdates(this); 
     } 
     if (allRequestIds.size() != 0) { 
      LocationServices.GeofencingApi.removeGeofences(
        mGoogleApiClient, 
        allRequestIds 
      ); 
      allRequestIds.clear(); 
      filterMap.clear(); 
      registeredFences.clear(); 
      mGoogleApiClient.disconnect(); 
     } 
    } 

ich auch versucht:

if (allRequestIds.size() != 0) { 
      LocationServices.GeofencingApi.removeGeofences(
        mGoogleApiClient, 
        getGeofencePendingIntent() 
      ); 
      allRequestIds.clear(); 
      filterMap.clear(); 
      registeredFences.clear(); 
      mGoogleApiClient.disconnect(); 
     } 

Ich erhalte diese Fehlermeldung:

Unable to destroy activity, GoogleApiClient is not connected yet. 

Das gleiche geschieht, wenn ich Mach es bei der onStop() Methode.

Das Endergebnis ist, dass die Geofences, die während der vorherigen Läufe hinzugefügt wurden, beibehalten werden. Ich will das nicht. Was läuft falsch?

Antwort

0

Von der Fehlermeldung scheint es klar, dass Ihre GoogleApiClient nicht verbunden ist.

Versuchen Sie, Ihre Aussage in eine if (mGoogleApiClient.isConnected()) zu verpacken. Wenn es dann falsch zurückkehrt, würde ich mich um meinen Code kümmern, wo ich ihn gestoppt habe, d. H. mGoogleApiClient.disconnect().

Beachten Sie, dass onDestroy() aufgerufen, wenn die Activity ist zerstört wird, so, dass die GoogleApiClient bereits vom System getrennt wurde sein kann. (obwohl ich auch notiere, dass Sie es in onStop() versucht haben)

Verwandte Themen