android - 为什么 Android WebChromeClient 的 onCreateWindow 方法从未被调用过?

标签 android webview

我正在 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 从未被调用过。有什么我遗漏的吗?
提前致谢。

最佳答案

您是否告诉“父”webview 允许多个窗口?

WebView parentWebview = (WebView) findViewById(R.id.parent_webview);
// ...
parentWebview.getSettings().setSupportMultipleWindows(true);

这是我见过的最常见的错误。

关于android - 为什么 Android WebChromeClient 的 onCreateWindow 方法从未被调用过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9511910/

相关文章:

java - Firebase:检索实现 Map<K, V> 的类的值

java - 如何比较 Firebase 中的时间戳数组?

Android WebView 在缓存路径中下载图片

java - Webview 视频 (iframe) 不播放,除了静音

android - 如何正确停止媒体播放器,android

android - 如何将Activity绑定(bind)到Service,并从Activity中控制和管理Service

android - onPause - 尝试调用虚拟方法 WebView

javascript - 单击链接时从 Android WebView 中的 anchor 标记获取 href 值

objective-c - cocoa webView -elementAtPoint : (OS X) 异常崩溃

android - 在 SearchView 中键入时带有文本的奇怪灰色弹出窗口