0

I made the Android multi-webview available and then opened a new window at window.open(). I put javascript code in a new window and tried to get a return, but the code was put in an existing window instead of a new window. Any solution? Help me

#javascript push method

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;
    }
breadjune
  • 1
  • 1
  • Does this `WebView` shown in your apps or Multi-Window as well? – mochadwi Nov 12 '21 at 05:30
  • How about creating a two fragment that consist of one webview to show your multi-webview? e.g this fragment was loaded top-bottom inside a single activity but cmiiw what's your actual usecase might needs a brief explanation as well in your questions – mochadwi Nov 12 '21 at 05:32

0 Answers0