From 772aedc263aa695e94c8dcd99aec05525b96f907 Mon Sep 17 00:00:00 2001 From: Joe Bowser Date: Tue, 18 Sep 2012 14:24:48 -0700 Subject: [PATCH] Fixing CB-1462, there's a difference betwene Global and Local listeners: --- .../org/apache/cordova/CordovaLocationListener.java | 10 ++++++++++ framework/src/org/apache/cordova/GeoBroker.java | 10 ++++++++++ 2 files changed, 20 insertions(+) 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; + } }