【问题标题】:WebView - open target=_blank links as target=_selfWebView - 打开 target=_blank 链接作为 target=_self
【发布时间】:2018-09-17 14:06:24
【问题描述】:

我的应用程序使用 webview 加载站点。一些链接有目标_blank并在新窗口中打开

public class EkChromeViewClient extends android.webkit.WebChromeClient {
    @Override
    public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
        Log.d("!!!new window!!!", "yes");

        WebView newWebView = new WebView(view.getContext());
        newWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
        newWebView.getSettings().setDomStorageEnabled(true);
        newWebView.getSettings().setSupportMultipleWindows(true);
        newWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

        newWebView.setWebViewClient(new EkWebViewClient());

        view.addView(newWebView);
        WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
        transport.setWebView(newWebView);
        resultMsg.sendToTarget();

        return true;
    }

    @Override
    public void onCloseWindow(WebView window) {
        Log.d("!!!close window!!!", "yes");
        super.onCloseWindow(window);
    }
}

但我只需要在一个窗口中打开所有 url,忽略 target=_blank

【问题讨论】:

    标签: android webview


    【解决方案1】:

    你需要做这样的事情。

    webView.setWebChromeClient(new WebChromeClient() {
    @Override
            public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
                Uri parsedUri = Uri.parse(view.getUrl());
                WebView newWebView = new WebView(view.getContext());
                view.addView(newWebView);
                WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
                transport.setWebView(newWebView);
                resultMsg.sendToTarget();
                PackageManager packageManager = getPackageManager();
                Intent browseIntent = new Intent(Intent.ACTION_VIEW).setData(parsedUri);
                if (browseIntent.resolveActivity(packageManager) != null) {
                    startActivity(browseIntent);
                    return true;
                }
                return true;
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-06
      • 2015-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 2014-11-01
      相关资源
      最近更新 更多