2

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

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

但是,当我只设置一个空的 WebViewClient...</p>

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

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

4

1 回答 1

2

这是设计使然。

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

要打开用户单击的链接,只需WebViewClient为您的WebView, 使用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 将要求 Activity Manager 为 url 选择正确的处理程序。如果提供了 WebViewClient,则返回 true 表示宿主应用程序处理 url,而 return false 表示当前 WebView 处理 url

shouldOverrideUrlLoading默认返回false

于 2013-07-30T07:45:18.527 回答