Android webview 显示空白的 url 具有弹出窗口阻止程序并在浏览器的新选项卡中打开

问题描述

我正在研究 Android 中的支付网关集成。我从 API 获得了一个 URL,当我在 chrome 网络浏览器中打开这个 URL 时,弹出窗口阻止程序阻止这个 URL,当我允许时,它会自动打开一个新选项卡并在其中打开。

当我在 Webview 中打开此 URL 时,它只显示空白屏幕。我在 Webview 中尝试以下设置。

    private void webViewInit(String url){
        viewDialoque.showDialog();
        final JavaScriptInterface myJavaScriptInterface = new JavaScriptInterface(this);
        webView.getSettings().setLightTouchEnabled(true);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.addJavascriptInterface(myJavaScriptInterface,"AndroidFunction");
        webView.setWebViewClient(new WebViewClient(){
            public boolean shouldOverrideUrlLoading(WebView view,String url) {
                Log.i(TAG,"Processing webview url click...");
//                view.loadUrl(url);
                return false;
            }
            public void onPageFinished(WebView view,"Finished loading URL: " + url);
                viewDialoque.hideDialog();
            }
            public void onReceivedError(WebView view,int errorCode,String description,String failingUrl) {
                Log.e(TAG,"Error: " + description);
            }
        });



        webView.getSettings().setLoadsImagesAutomatically(true);
        webView.getSettings().setDomStorageEnabled(true);
        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
        webView.getSettings().setLoadWithOverviewmode(true);
        webView.getSettings().setUseWideViewPort(true);
        webView.getSettings().setBuiltInZoomControls(false);
        webView.getSettings().setSupportZoom(false);

        webView.getSettings().setPluginState(WebSettings.PluginState.ON);
        webView.getSettings().setAllowFileAccess(true);
        webView.getSettings().setJavaScriptCanopenWindowsAutomatically(true);

        WebChromeClient webChromeClient = new WebChromeClient() {

            @Override
            public boolean onCreateWindow(WebView view,boolean isDialog,boolean isUserGesture,Message resultMsg) {

                WebView newWebView = new WebView(PaymeroUserDetailsActivity.this);
                newWebView.getSettings().setJavaScriptEnabled(true);
                newWebView.getSettings().setSupportZoom(true);
                newWebView.getSettings().setBuiltInZoomControls(true);
                newWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
                newWebView.getSettings().setSupportMultipleWindows(true);
                view.addView(newWebView);
                WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
                transport.setWebView(newWebView);
                resultMsg.sendToTarget();

                newWebView.setWebViewClient(new WebViewClient() {
                    @Override
                    public boolean shouldOverrideUrlLoading(WebView view,String url) {
//                        view.loadUrl(url);
                        return false;
                    }
                });

                return false;
            }

            @Override
            public boolean onjsAlert(WebView view,String url,String message,JsResult result) {
                result.cancel();
                return true;
            }

            @Override
            public boolean onjsConfirm(WebView view,JsResult result) {
                result.cancel();
                return true;
            }

            @Override
            public boolean onjsPrompt(WebView view,String defaultValue,JsPromptResult result) {
                result.cancel();
                return true;
            }
        };
        webView.getSettings().setSupportMultipleWindows(true);
        webView.setWebChromeClient(webChromeClient);

       webView.loadUrl(url);
    }

请帮帮我。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)