2013-07-30 52 views
2

通常,當在WebView中單擊鏈接時,意圖會導致Web瀏覽器或支持該意圖的其他活動打開。僅設置webViewClient會導致在webview內部打開鏈接

WebView webView = new WebView(this); 
setContentView(webView); 
webView.loadUrl("http://google.com"); 

然而,當我僅僅設置空WebViewClient ...

WebView webView = new WebView(this); 
webView.setWebViewClient(new WebViewClient() {}); 
setContentView(webView); 
webView.loadUrl("http://google.com"); 

...鏈接在網頁視圖中打開並沒有意圖被解僱!怎麼來的?

回答

2

這是設計。

http://developer.android.com/guide/webapps/webview.html#HandlingNavigation

要打開用戶點擊鏈接,只是爲您提供WebView一個WebViewClient,用setWebViewClient()。例如:

WebView myWebView = (WebView) findViewById(R.id.webview); 
myWebView.setWebViewClient(new WebViewClient()); 

就是這樣。現在,用戶點擊WebView中的所有鏈接。

而且

http://developer.android.com/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading(android.webkit.WebView, java.lang.String)

如果不提供WebViewClient,默認的WebView會問活動管理器選擇該URL的正確處理。 如果提供WebViewClient,返回true表示主機應用程序處理的URL,而返回false意味着當前的WebView處理URL

shouldOverrideUrlLoading默認返回false

+0

那麼,有沒有辦法實現兩者兼而有之?通過返回參數值,或調用引發意圖的適當方法?還是我必須自己實施這種事情? – TacB0sS

+0

如果您想在您的應用程序中處理它,並讓系統處理它,只需使用頁面的URL啓動ACTION_VIEW意圖即可。 –