在H5中调用window.open是无法打开新窗口的,需要在android中添加如下代码才能实现:
webSetting.setJavaScriptEnabled(true);
webSetting.setSupportMultipleWindows(true);
webSetting.setJavaScriptCanOpenWindowsAutomatically(true);
还有就是需要重写WebChromeClient里面的onCreateWindow方法,内容如下
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
WebView newWebView = new WebView(view.getContext());
setting(newWebView);
newWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("http")) {
webView.loadUrl(url);
return true;
// return super.shouldOverrideUrlLoading(view, url);
} else {
try {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
//finish();
return true;
} catch (Exception e) {//防止crash (如果手机上没有安装处理某个scheme开头的url的APP, 会导致crash)
return true;//没有安装该app时,返回true,表示拦截自定义链接,但不跳转,避免弹出上面的错误页面
}
}
// 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;
}