2012-03-01 241 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);

相關問題