Android WebView链接到具有target = _blank的同一窗口以打开新窗口 [英] Android WebView links to same window with target=_blank to open new window
问题描述
我有一个混合应用程序,该应用程序使用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屋!