0
点赞
收藏
分享

微信扫一扫

webview 取得 onCreateWindow url


webview对于

<a href="http://www.google.com" target="_blank">new window</a>

这种形式的tag,会要求起一个新窗口打开,而要截获这个请求,则可以在webChromeClient的onCreateWindow()回调函数中进行处理,

今天有个小的需求是,获知打开的新window的url,本以为很简单,谁知道webChromeClient比较SB,全部信息都被包在一个message里,

根本取不到url,搜了老半天,只在stackoverflow中有一个比较hack的方法:

http://stackoverflow.com/questions/15368885/android-webview-determine-a-target-blank

mWebView.setWebChromeClient(new WebChromeListener() {
    @Override
    public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) {
        WebView newWebView = new WebView(view.getContext());
        newWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(browserIntent);
                return true;
            }
        });
        WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
        transport.setWebView(newWebView);
        resultMsg.sendToTarget();
        return true;
    }
});



举报

相关推荐

0 条评论