我正在webview服务上构建我的应用程序并尝试在另一个窗口中打开新的URL(既不在默认系统浏览器中也不在同一webview中)。我设置了我自己的WebViewClient和WebChromeClient,如下所示,
public class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading (WebView view, String url) {
view.loadUrl(url);
return true;
}
}
public class MyWebChromeClient extends WebChromeClient {
@Override
public boolean onCreateWindow (WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
WebView childView = new WebView(view.getContext());
final WebSettings settings = childView.getSettings();
settings.setJavaScriptEnabled(true);
childView.setWebChromeClient(this);
childView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(childView);
resultMsg.sendToTarget();
Log.d(LOG_TAG, "onCreateWindow"); // never log
return true;
}
}
我也确实将 webview setSupportMultipleWindows设为true 。
但是,onCreateWindow从未被调用过。我错过了什么吗?
提前谢谢。
答案 0 :(得分:2)
您是否告诉“父”网页视图允许多个窗口?
WebView parentWebview = (WebView) findViewById(R.id.parent_webview);
// ...
parentWebview.getSettings().setSupportMultipleWindows(true);
这是我见过的最常见的错误。
答案 1 :(得分:0)
如果没有完整的代码,很难说为什么没有调用OnCreateWindow()。在您的活动OnCreate()方法中,您是否有类似以下的代码?
// Get the main web viewer
mWebView = (WebView) findViewById(R.id.webViewer);
// Enable Javascript
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
// Set WebViewClient and WebChromClient
mWebView.setWebViewClient(new MyWebViewClient());
mWebView.setWebChromeClient(new MyWebChromeClient());
另外,您使用的是哪种代码,您认为应该调用OnCreateWindow()
?
答案 2 :(得分:0)
将此行添加到代码中以调用onCreateWindow() 。webView.getSettings()setSupportMultipleWindows(真);