【问题标题】:Android : Unable to open Pop-up Form in web viewAndroid:无法在 Web 视图中打开弹出式表单
【发布时间】:2018-06-13 04:43:18
【问题描述】:

我正在制作一个 android 应用程序以在 web 视图中打开一个网站。该网站运行良好,我可以轻松导航到不同的页面,但是当用户单击“登录”选项时,webview 没有显示登录表单。我已经尝试了很多方法来修复它,但我没有得到它。请帮忙。

网址:https://www.digverve.com/

Web Activity.java

public class WebActivity extends AppCompatActivity {
private WebView webView;
private String url = "https://www.digverve.com/";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_web);

    webView = findViewById(R.id.Web_view);
    webView.setWebViewClient(new WebViewClient(){
        @Override
        public void onReceivedSslError(final WebView webView, final SslErrorHandler handler, SslError error) {
            Log.d("CHECK", "onReceivedSslError");
            AlertDialog.Builder builder = new AlertDialog.Builder(WebActivity.this);
            AlertDialog alertDialog = builder.create();
            String message = "Certificate error.";
            switch (error.getPrimaryError()) {
                case SslError.SSL_UNTRUSTED:
                    message = "The certificate authority is not trusted.";
                    break;
                case SslError.SSL_EXPIRED:
                    message = "The certificate has expired.";
                    break;
                case SslError.SSL_IDMISMATCH:
                    message = "The certificate Hostname mismatch.";
                    break;
                case SslError.SSL_NOTYETVALID:
                    message = "The certificate is not yet valid.";
                    break;
            }
            message += " Do you want to continue anyway?";
            alertDialog.setTitle("SSL Certificate Error");
            alertDialog.setMessage(message);
            alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Log.d("CHECK", "Button ok pressed");
                    // Ignore SSL certificate errors
                    handler.proceed();
                }
            });
            alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Log.d("CHECK", "Button cancel pressed");
                    handler.cancel();
                }
            });
            alertDialog.show();
        }
    });

    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setDatabaseEnabled(true);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    webView.getSettings().setAllowFileAccess(true);

    webView.loadUrl(url);

}

}

【问题讨论】:

    标签: java android android-studio web webview


    【解决方案1】:

    对于这种类型的警报,您必须设置处理它的chrome client。您应该使用 WebChromeClient 在 webview 中获取这些类型的警报。 WebChromeClient 提供了处理它的 onJsAlert 方法,或者你可以简单地覆盖这个方法,

    webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                // Anything you want to do on pop-up
                return super.onJsAlert(view, url, message, result);
    }
    

    【讨论】:

    • @Shubham Kaps,如果您有任何问题,请告诉我。
    • 我不想在弹出窗口上做任何事情。我只是将网站网址加载到 webview 中,当用户单击“登录”选项时,它没有显示登录表单。你可以打开我的网站digverve.com,点击“登录”,看看我说的是哪种表格。无论如何,谢谢您的关心。
    • 什么都不想做也没关系。只需return super.onJsAlert(view, url, message, result);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    相关资源
    最近更新 更多