Added check for isFinishing() on the parent activity to prevent crashes when trying to display dialogs when activity is in this phase of it's lifecycle
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-dialogs/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-dialogs/commit/0beb8dac Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-dialogs/tree/0beb8dac Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-dialogs/diff/0beb8dac Branch: refs/heads/dev Commit: 0beb8daccab726ca492705221e97bc2d85473db0 Parents: 2b591b2 Author: Archana Naik <[email protected]> Authored: Wed Apr 9 22:42:33 2014 -0700 Committer: Archana Naik <[email protected]> Committed: Mon Apr 28 11:28:26 2014 -0700 ---------------------------------------------------------------------- src/android/Notification.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-plugin-dialogs/blob/0beb8dac/src/android/Notification.java ---------------------------------------------------------------------- diff --git a/src/android/Notification.java b/src/android/Notification.java index 558507e..d068612 100755 --- a/src/android/Notification.java +++ b/src/android/Notification.java @@ -57,6 +57,14 @@ public class Notification extends CordovaPlugin { * @return True when the action was valid, false otherwise. */ public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { + /* + * Don't run any of these if the current activity is finishing + * in order to avoid android.view.WindowManager$BadTokenException + * crashing the app. Just return true here since false should only + * be returned in the event of an invalid action. + */ + if(this.cordova.getActivity().isFinishing()) return true; + if (action.equals("beep")) { this.beep(args.getLong(0)); } @@ -133,8 +141,7 @@ public class Notification extends CordovaPlugin { * @param callbackContext The callback context */ public synchronized void alert(final String message, final String title, final String buttonLabel, final CallbackContext callbackContext) { - - final CordovaInterface cordova = this.cordova; + final CordovaInterface cordova = this.cordova; Runnable runnable = new Runnable() { public void run() { @@ -176,8 +183,7 @@ public class Notification extends CordovaPlugin { * @param callbackContext The callback context. */ public synchronized void confirm(final String message, final String title, final JSONArray buttonLabels, final CallbackContext callbackContext) { - - final CordovaInterface cordova = this.cordova; + final CordovaInterface cordova = this.cordova; Runnable runnable = new Runnable() { public void run() {
