diff --git a/framework/src/org/apache/cordova/CordovaLocationListener.java b/framework/src/org/apache/cordova/CordovaLocationListener.java index fcb6bf34..0ad441d6 100755 --- a/framework/src/org/apache/cordova/CordovaLocationListener.java +++ b/framework/src/org/apache/cordova/CordovaLocationListener.java @@ -55,6 +55,11 @@ public class CordovaLocationListener implements LocationListener { { this.owner.fail(code, message, callbackId); } + if(this.owner.isGlobalListener(this)) + { + Log.d(TAG, "Stopping global listener"); + this.stop(); + } this.callbacks.clear(); Iterator it = this.watches.entrySet().iterator(); @@ -69,6 +74,11 @@ public class CordovaLocationListener implements LocationListener { { this.owner.win(loc, callbackId); } + if(this.owner.isGlobalListener(this)) + { + Log.d(TAG, "Stopping global listener"); + this.stop(); + } this.callbacks.clear(); Iterator it = this.watches.entrySet().iterator(); diff --git a/framework/src/org/apache/cordova/GeoBroker.java b/framework/src/org/apache/cordova/GeoBroker.java index 9b0838b8..d3bf6b34 100755 --- a/framework/src/org/apache/cordova/GeoBroker.java +++ b/framework/src/org/apache/cordova/GeoBroker.java @@ -191,4 +191,14 @@ public class GeoBroker extends Plugin { this.error(result, callbackId); } + + public boolean isGlobalListener(CordovaLocationListener listener) + { + if (gpsListener != null && networkListener != null) + { + return gpsListener.equals(listener) || networkListener.equals(listener); + } + else + return false; + } }