通常,在WebView中单击链接时,意图会导致Web浏览器或其他支持该意图的活动打开。

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");


…在WebView中打开链接,并且不会触发任何意图!怎么来的?

最佳答案

这是设计使然。

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


  要打开用户单击的链接,只需使用WebViewClientWebView提供一个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

关于android - 仅仅设置webViewClient会使链接在webview中打开,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17940882/

10-12 04:17