0

我使 Android 多 webview 可用,然后在 window.open() 处打开一个新窗口。我将 javascript 代码放在新窗口中并试图获得回报,但代码被放在现有窗口而不是新窗口中。有什么解决办法吗?帮我

#javascript推送方法

public void webViewEvent(WebView view, String script, int delay, String service) {
    TextView footerBottomText = findViewById(R.id.footerBottomText);
    handler.postDelayed(new Runnable() {
        @RequiresApi(api = Build.VERSION_CODES.KITKAT)
        @Override
        public void run() {

            view.evaluateJavascript(script, new ValueCallback<String>() {
                @Override
                public void onReceiveValue(String s) {
                    scriptCallback(service, s);
                }
            });
        }
    }, delay);
}

#onCreateWindow

@Override
    public boolean onCreateWindow(final WebView view, boolean dialog,
                                  boolean userGesture, Message resultMsg) {

        newWebView = new WebView(MainActivity.this);
        WebSettings webSettings = newWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setSupportMultipleWindows(true);
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        webSettings.setDomStorageEnabled(true);
        webSettings.setAllowFileAccess(true);
        webSettings.setUserAgentString(dbHelper.getUserConfig().get("userAgent"));
        newWebView.setFocusable(true);
        newWebView.setFocusableInTouchMode(true);

        newWebView.setWebViewClient(new WebViewClient());
        newWebView.setWebChromeClient(new WebChromeClient(){
            @Override
            public void onCloseWindow(WebView window) {
                window.setVisibility(View.GONE);
                myWebView.removeView(window);
            }
        });
        myWebView.addView(newWebView);

        WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
        transport.setWebView(newWebView);
        resultMsg.sendToTarget();
        return true;
    }
4

0 回答 0