Android WebView 链接到带有 target=_blank 的同一窗口以打开新窗口

标签 android html webview

我有一个混合应用程序,它使用 WebView 从我自己的网站呈现外部 html。它有一个问题,如果单击任何链接,它会启动一个浏览器窗口。我发现这段代码可以帮助我解决问题并且它有效:

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

但现在的问题是我希望它不适用于其中包含 target=_blank 的链接。因此,任何普通链接仍会在 WebView 中打开,而带有 target=_blank 的链接应在新的浏览器窗口中打开。

我们有什么办法可以做到这一点?

谢谢

最佳答案

首先,

mWebView.getSettings().setSupportMultipleWindows(true);

然后在 WebChromeClient 中,覆盖 OnCreateWindow()

    private class MyWebChromeclient extends WebChromeClient {


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

            WebView newWebView = new WebView(WebViewActivity2.this);
            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) {
                    Intent browserIntent = new Intent(Intent.ACTION_VIEW);
                    browserIntent.setData(Uri.parse(url));
                    startActivity(browserIntent);
                    return true;
                }
            });
        return true;
    }

关于Android WebView 链接到带有 target=_blank 的同一窗口以打开新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27009995/

相关文章:

java - 如何将数据存储在特殊的 id 上并从该 id 获取该数据?

java - 更改位置设置

html - 将 CSS 类应用于 li 而不是子 li

ios - 尝试在 webKit 上获取返回按钮

android - 限制在android中的webview中调用号码

android - Fragment 中的自定义 ListView 不起作用

android - 如何获取 Android 首选项的类别?

python - 使用 lxml 检索类属性的名称

html - 两条独立的线彼此之间的距离真的很远

android - 带有插件的 Cordova 3.5 嵌入式 webview