Ivelin Iliev
Ivelin Iliev

Reputation: 53

Android WebViewClient with JavaScript Alerts/Prompt

I am having the following problem: My website i prompting me with this JavaScript Popup

JS Popup Form

I need to create this wrapper for the webSite and I need somehow to process this dialog. I have tried using ChromeWebView Client but my website is not loading at all with it. I tried adding both WebView and ChromeWebView Clients to my WebView but it is still not working. Here is some of my code:

        String text = getIntent().getStringExtra("currentUrl");
    this.myWebView.loadUrl(text);

    WebViewClient webViewClientProceedSSL = new ProceedSSLClient(myWebView);
    this.myWebView.setWebViewClient(webViewClientProceedSSL);
    this.myWebView.setWebChromeClient(new WebChromeClient());

Do you have any ideas how can i fix that?

Edit 1: I have forgotten to add my WebView Settings. Here are they:

    webSettings.setJavaScriptEnabled(true);
    webSettings.setAppCacheEnabled(true);
    webSettings.setDomStorageEnabled(true);
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
    webSettings.setGeolocationEnabled(true);
    webSettings.setDomStorageEnabled(true);

Edit 2:

I have tried overriding both methods onJsAlert and onJsPrompt in the WebChromeClient class when setting it to the webView. This is not working as well...

  myWebView.setWebChromeClient(new WebChromeClient() {
        @Override
        public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
            return super.onJsAlert(view, url, message, result);
        }
    });

I am not getting in that method at All - I tried logging something in it and debugging it. I never got in.

Upvotes: 1

Views: 1230

Answers (1)

Dev Sharma
Dev Sharma

Reputation: 674

Add the following to the Webview

webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setJavaScriptEnabled(true);

Also try adding this method in WebViewClient

webview.setWebChromeClient(new WebChromeClient() {
   @Override
   public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
   //Required functionality here
      return super.onJsAlert(view, url, message, result);
   }
});

Upvotes: 2

Related Questions