2012-03-01 244 views
1

我在webview服务上构建我的应用程序,并尝试在另一个窗口中打开新的URL(既不在默认系统浏览器中,也不在同一个webview中)。我建立自己WebViewClient和WebChromeClient像下面,为什么Android WebChromeClient的onCreateWindow方法永远不会被调用?

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真
但是,onCreateWindow永远不会被调用。有什么我错过了吗?
在此先感谢。

+1

你的onCreate()方法是什么样的? – 2012-03-16 20:29:21

+0

我只是想在另一个webview中加载新的url。老实说,我把它复制到某个地方 – fifth 2012-03-21 02:37:53

+0

您好@fifth您是否找到相同的解决方案? – 2012-09-26 10:40:47

回答

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

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

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

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

0

add this line to code to invoke onCreateWindow() webView.getSettings()。setSupportMultipleWindows(true);

相关问题