首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WebView -以target=_self形式打开target=_blank链接

WebView -以target=_self形式打开target=_blank链接
EN

Stack Overflow用户
提问于 2018-09-17 22:06:24
回答 1查看 372关注 0票数 2

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

代码语言:javascript
运行
复制
public class EkChromeViewClient extends android.webkit.WebChromeClient {
    @Override
    public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
        Log.d("!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("!window!", "yes");
        super.onCloseWindow(window);
    }
}

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

EN

回答 1

Stack Overflow用户

发布于 2019-06-07 21:32:20

你需要做这样的事情。

代码语言:javascript
运行
复制
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;
        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52369640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档