在Android WebView中,多窗口功能可能无法正常工作。下面是一种解决方法,其中包含了代码示例:
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setSupportMultipleWindows(true);
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
// 创建新的WebView窗口
WebView newWebView = new WebView(MainActivity.this);
newWebView.getSettings().setJavaScriptEnabled(true);
newWebView.getSettings().setSupportMultipleWindows(true);
newWebView.setWebChromeClient(this);
// 将新的WebView添加到当前Activity中
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
webViewContainer.addView(newWebView, params);
// 将新的WebView的WebViewTransport对象传递给resultMsg
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
return true;
}
});
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (webView != view) {
// 在新的WebView窗口中加载URL
webView.loadUrl(url);
}
}
这样,当用户在WebView中点击链接或打开新窗口时,会在新的WebView窗口中加载相应的URL。