Между чем различие setWebViewClient
по сравнению с. setWebChromeClient
в Android?
Из исходного кода:
// Instance of WebViewClient that is the client callback.
private volatile WebViewClient mWebViewClient;
// Instance of WebChromeClient for handling all chrome functions.
private volatile WebChromeClient mWebChromeClient;
// SOME OTHER SUTFFF.......
/**
* Set the WebViewClient.
* @param client An implementation of WebViewClient.
*/
public void setWebViewClient(WebViewClient client) {
mWebViewClient = client;
}
/**
* Set the WebChromeClient.
* @param client An implementation of WebChromeClient.
*/
public void setWebChromeClient(WebChromeClient client) {
mWebChromeClient = client;
}
Использование WebChromeClient позволяет обрабатывать диалоги Javascript, фавиконы, заголовки и прогресс. Взгляните на этот пример: Добавление поддержки alert() в WebView
На первый взгляд, слишком много различий WebViewClient и WebChromeClient. Но, в принципе: если вы разрабатываете WebView, которому не требуется слишком много функций, кроме рендеринга HTML, вы можете просто использовать WebViewClient
. С другой стороны, если вы хотите (например) загрузить фавикон отображаемой страницы, вам следует использовать объект WebChromeClient
и переопределить onReceivedIcon(WebView view, Bitmap icon)
.
В большинстве случаев, если вы не хотите беспокоиться об этих вещах... вы можете просто сделать вот так:
webView= (WebView) findViewById(R.id.webview);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
И ваш WebView (теоретически) будет иметь все реализованные функции (как родной браузер android).