Android WebView链接到具有target = _blank的同一窗口以打开新窗口 [英] Android WebView links to same window with target=_blank to open new window

查看:831
本文介绍了Android WebView链接到具有target = _blank的同一窗口以打开新窗口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个混合应用程序,该应用程序使用WebView从我自己的网站呈现外部html.问题是,如果单击任何链接,则会启动浏览器窗口.我找到了这段代码可以帮助我,并且可以正常工作:

I have a hybrid app that uses WebView to render external html from my own site. It had a problem that if any link was clicked, it started a browser window. I found this code to help me out and it works:

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

但是现在的问题是,我希望它对其中具有target = _blank的链接不起作用.因此,任何正常的链接仍会在WebView内打开,而具有target = _blank的链接应在新的浏览器窗口中打开.

But now the problem is that I want it to not work for links that have target=_blank in them. So any normal links still open inside the WebView while the links with target=_blank should open in new browser window.

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

Any way we can do this?

谢谢

推荐答案

首先,

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的同一窗口以打开新窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆