Android中的setWebViewClient
和setWebChromeClient
有什么区别?
最佳答案
// 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对话框,图标,标题和进度。看一下这个例子:Adding alert() support to a WebView
乍一看,WebViewClient和WebChromeClient之间有太多差异。但是,基本上:如果您要开发不需要太多功能但呈现HTML的WebView,则可以使用
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 native 浏览器)。