2016-09-06 5 views
-2

J'ai un problème avec l'alerte de proximité, et pour le test, j'essaie d'ajouter ProximityAlert et de l'enlever immédiatement après. J'ai cette fonction:La suppression de l'alerte de proximité ne fonctionne pas

public void addproximity(View v) { 
    SharedPreferences sharedPref = getSharedPreferences("proximityService", Context.MODE_PRIVATE); 

    int unique_id = sharedPref.getInt("PENDING_ID", 0); 
    unique_id = unique_id+1; 

    SharedPreferences.Editor editor = sharedPref.edit(); 
    editor.putInt("PENDING_ID", unique_id); 
    editor.commit(); 
    Intent intentNew = new Intent(PROX_ALERT_INTENT); 

    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    double latitude = 43.9297615; 
    double longitude = 10.2035046; 
    PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), unique_id, intentNew, 0); 
    lm.addProximityAlert(latitude, longitude, 200, -1, pi); 
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     return; 
    } 
    IntentFilter filter = new IntentFilter(PROX_ALERT_INTENT); 
    mHandleMessageReceiver = new ProximityAlertReceiver(); 
    registerReceiver(mHandleMessageReceiver, filter); 


    lm.removeProximityAlert(pi); 

} 

Mais je testé avec GPS faux, et la proximité sont pas supprimées, et la diffusion reçoivent encore l'événement. qu'est-ce que je me trompe?

+0

Mais -1 pourquoi? peux tu m'expliquer? – LorenzoBerti

Répondre

1

en addProximityAlert() méthode que vous passez -1 comme valeur d'expiration, ce qui signifie que votre geofrence n'expirera pas (Geofence.NEVER_EXPIRE) .Cela est la raison pour laquelle geofrence ne supprime pas.Changer ce drapeau et essayez à nouveau.

+0

bonjour Jinesh, merci, oui j'ai réussi -1 parce que je veux que la proximité n'a pas expiré après le temps, mais je veux le supprimer manuellement – LorenzoBerti

+0

appelez lm.removeUpdates (pi) aussi. –

+0

mon problème est plus complexe pourriez-vous vous joindre à discuter? https://chat.stackoverflow.com/rooms/122743/proximity-alert-doesnt-work – LorenzoBerti