在Web视图中处理警报

时间:2018-10-29 18:30:32

标签: android android-webview

我正在尝试在应用程序的第一页中显示一个url,但该网址需要第三方标志,该标志会像警报对话框一样弹出,我尝试使用WebChormeClient处理警报,当我尝试使用来自w3Schools的示例,但是当我尝试使用url时,该方法不起作用,是否有任何方法可以处理webview中的第三方登录警报?

请找到我使用的代码

    WebSettings webSettings = mywebview.getSettings();
    mywebview.setWebViewClient(new SSLTolerentWebViewClient());
    webSettings.setJavaScriptEnabled(true);
    webSettings.setLoadWithOverviewMode(true);
    webSettings.setUseWideViewPort(true);
    mywebview.setWebChromeClient(new WebChromeClient());
    mywebview.loadUrl(url);


     private class SSLTolerentWebViewClient extends WebViewClient {
       public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        handler.proceed(); // Ignore SSL certificate errors
       }
     }

我不应该提供该URL,想象一下您正在加载一个要求您以第三方警报形式登录的URL,然后以成功的身份验证来加载页面。

2 个答案:

答案 0 :(得分:-1)

根据您的代码,我认为您不会在设置Webviewclient和Webcromeclient之后在Webview中启用Javascript。

mWebView.setWebViewClient(new WebViewClient());
mWebView.setWebChromeClient(new WebChromeClient());

然后使用以下代码加载HTML页面。

mWebView.loadUrl("file:///android_asset/"+Your_Html_Page);

答案 1 :(得分:-1)

您可以根据需要选择以下方法。

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

        @Override
        public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
            return super.onJsConfirm(view, url, message, result);
        }

        @Override
        public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
            return super.onJsPrompt(view, url, message, defaultValue, result);
        }
    });
  

Jsresult处理方法中的

result.cancel(); result.confirm();

  

在JsPromptResult处理方法中

result.cancel(); result.confirm(); result.confirm(String msg);