diff --git a/src/android/InAppBrowser.java b/src/android/InAppBrowser.java index 048b02a11..060330261 100644 --- a/src/android/InAppBrowser.java +++ b/src/android/InAppBrowser.java @@ -148,6 +148,7 @@ public class InAppBrowser extends CordovaPlugin { private String footerColor = ""; private String beforeload = ""; private String[] allowedSchemes; + private InAppBrowserClient currentClient; /** * Executes the request and returns PluginResult. @@ -264,7 +265,12 @@ else if (action.equals("loadAfterBeforeload")) { @SuppressLint("NewApi") @Override public void run() { - ((InAppBrowserClient)inAppWebView.getWebViewClient()).waitForBeforeload = false; + if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.O) { + currentClient.waitForBeforeload = false; + inAppWebView.setWebViewClient(currentClient); + } else { + ((InAppBrowserClient)inAppWebView.getWebViewClient()).waitForBeforeload = false; + } inAppWebView.loadUrl(url); } }); @@ -964,8 +970,8 @@ public void openFileChooser(ValueCallback uploadMsg, String acceptType) } }); - WebViewClient client = new InAppBrowserClient(thatWebView, edittext, beforeload); - inAppWebView.setWebViewClient(client); + currentClient = new InAppBrowserClient(thatWebView, edittext, beforeload); + inAppWebView.setWebViewClient(currentClient); WebSettings settings = inAppWebView.getSettings(); settings.setJavaScriptEnabled(true); settings.setJavaScriptCanOpenWindowsAutomatically(true); @@ -1200,7 +1206,9 @@ public boolean shouldOverrideUrlLoading(String url, String method) { boolean useBeforeload = false; String errorMessage = null; - if(beforeload.equals("yes") + if (beforeload.equals("yes") && method == null) { + useBeforeload = true; + }else if(beforeload.equals("yes") //TODO handle POST requests then this condition can be removed: && !method.equals("POST")) {