之间有什么区别 setWebViewClientsetWebChromeClient 在安卓?

有帮助吗?

解决方案

源代码:

// 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对话、网站图示、标题和进展情况。看看这个示例: 加入警报()支持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编程,书呆子农场指南(第2版)的启发。

按默认下,JavaScript是关闭在web视图。你并不总是需要有它,但是对于一些应用,可能确实需要它。

加载URL已经配置的WebView之后进行,所以你做的最后一次。在此之前,你允许JavaScript脚本运行通过调用getSettings()得到WebSettings的一个实例,并调用WebSettings.setJavaScriptEnabled(true)。 WebSettings是第一的三种方式你可以修改你的WebView。它可以设置各种属性,如用户代理字符串和文字大小。

之后,您配置WebViewClient。 WebViewClient是一个事件接口。通过提供自己的实现WebViewClient的,你可以在渲染事件。例如,可以当所述渲染器开始从特定的URL加载图像或决定是否重新提交POST请求到服务器检测

WebViewClient 有很多方法可以覆盖,其中大部分你不会应对。但是,你需要替换默认WebViewClient的实现shouldOverrideUrlLoading(WebView, String)的。此方法确定当一个新的URL在WebView中被加载,如按一个链接会发生什么。如果返回true,你是说,“不处理这个URL,我处理我自己。”如果你返回false,你说,“来吧,加载这个URL,WebView中,我没有做任何事的。”

默认实现火灾与URL隐含意图,就像您前面所做的。但现在,这将是一个严重的问题。一些Web应用程序做的第一件事就是将您重定向到该网站的移动版本。使用默认WebViewClient,这意味着你会立即发送到用户的默认浏览器。这是你正试图避免什么。 解决方法是简单 - 只是覆盖默认实现并返回false。

使用WebChromeClient云杉东西 既然你正在创建自己的WebView的时间,让我们云杉它有点通过添加一个进度条,并与加载页面的标题更新工具栏上的字幕。

要挂钩的进度条中,将使用在web视图的第二个回调:WebChromeClient

WebViewClient是用于响应于呈现事件的接口; WebChromeClient是反应应该改变周围的chrome浏览器的内容事件的事件接口。这包括JavaScript警告,网站图标,并加载进度和当前页面的标题当然更新。

钩它在onCreateView(…)起来。使用WebChromeClient云杉的事情了 最新进展和每个人都有自己的回调方法标题更新, onProgressChanged(WebView, int)onReceivedTitle(WebView, String)。你onProgressChanged(WebView, int)收到的进展是从0到100的整数。如果是100,你就知道 该页面加载完成,所以你通过其知名度设置View.GONE隐藏进度。

  

声明:此信息是取自Android的程序设计:大书呆子牧场指南从作者的许可。欲了解更多   这本书的信息购买,请访问   bignerdranch.com。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top