From 392a73c2cdcfc643622832cb6d2ac218f4da082a Mon Sep 17 00:00:00 2001 From: Kris Erickson Date: Sun, 9 Mar 2014 11:33:24 -0700 Subject: [PATCH] Add a hardwareback option to allow for the hardware back button to go back. --- src/android/InAppBrowser.java | 24 +++++++++++++++++++++++- src/android/InAppBrowserDialog.java | 6 +++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/android/InAppBrowser.java b/src/android/InAppBrowser.java index 796036f..ab8c4fb 100644 --- a/src/android/InAppBrowser.java +++ b/src/android/InAppBrowser.java @@ -78,6 +78,7 @@ public class InAppBrowser extends CordovaPlugin { private static final String CLOSE_BUTTON_CAPTION = "closebuttoncaption"; private static final String CLEAR_ALL_CACHE = "clearcache"; private static final String CLEAR_SESSION_CACHE = "clearsessioncache"; + private static final String HARDWARE_BACK_BUTTON = "hardwareback"; private InAppBrowserDialog dialog; private WebView inAppWebView; @@ -88,6 +89,7 @@ public class InAppBrowser extends CordovaPlugin { private String buttonLabel = "Done"; private boolean clearAllCache= false; private boolean clearSessionCache=false; + private boolean hadwareBackButton=false; /** * Executes the request and returns PluginResult. @@ -363,12 +365,28 @@ public class InAppBrowser extends CordovaPlugin { /** * Checks to see if it is possible to go back one page in history, then does so. */ - private void goBack() { + public void goBack() { if (this.inAppWebView.canGoBack()) { this.inAppWebView.goBack(); } } + /** + * Can the web browser go back? + * @return boolean + */ + public boolean canGoBack() { + return this.inAppWebView.canGoBack(); + } + + /** + * Has the user set the hardware back button to go back + * @return boolean + */ + public boolean hardwareBack() { + return hadwareBackButton; + } + /** * Checks to see if it is possible to go forward one page in history, then does so. */ @@ -428,6 +446,10 @@ public class InAppBrowser extends CordovaPlugin { if (hidden != null) { openWindowHidden = hidden.booleanValue(); } + Boolean hardwareBack = features.get(HARDWARE_BACK_BUTTON); + if (hardwareBack != null) { + hadwareBackButton = hardwareBack.booleanValue(); + } Boolean cache = features.get(CLEAR_ALL_CACHE); if (cache != null) { clearAllCache = cache.booleanValue(); diff --git a/src/android/InAppBrowserDialog.java b/src/android/InAppBrowserDialog.java index 124e211..d701720 100644 --- a/src/android/InAppBrowserDialog.java +++ b/src/android/InAppBrowserDialog.java @@ -48,7 +48,11 @@ public class InAppBrowserDialog extends Dialog { } else { // better to go through the in inAppBrowser // because it does a clean up - this.inAppBrowser.closeDialog(); + if (this.inAppBrowser.hardwareBack() && this.inAppBrowser.canGoBack()) { + this.inAppBrowser.goBack(); + } else { + this.inAppBrowser.closeDialog(); + } } } }