Каково различие между setWebViewClient по сравнению с setWebChromeClient?

Между чем различие setWebViewClient по сравнению с. setWebChromeClient в Android?

219
задан Cristian 17 February 2011 в 03:51
поделиться

1 ответ

Из исходного кода:

// 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).

138
ответ дан 23 November 2019 в 04:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: