Android开发-WebView(二)-setWebViewClient

1,807 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天,点击查看活动详情

上一篇文章介绍了webview的几个属性方法,以及简单的使用,接下来我们详细介绍了它的几个属性方法的使用,首先我们介绍的是setWebViewClient。

setWebViewClient 的定义及使用

setWebViewClient 在webview中的作用就是处理web页面加载过程中各种内部请求或者加载过程中需要特殊处理的拦截事件处理,相比较WebChromeClient,它的作用大很多。先来看下它的内部实现方法有哪些。

官方的文档里有很多的方法,具体如下:

image.png

但是实际开发过程中,我们真正使用到的常用的实现方法有三个:

shouldOverrideUrlLoading:这个方法官方的解释:Give the host application a chance to take control when a URL is about to be loaded in the current WebView. If a WebViewClient is not provided, by default WebView will ask Activity Manager to choose the proper handler for the URL. If a WebViewClient is provided, returning true causes the current WebView to abort loading the URL, while returning false causes the WebView to continue loading the URL as usual.

其实通俗的解释就是用来处理页面重定向的url的回调。举个栗子:

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
	Log.i(TAG, "当前加载的url:" + url);
	if (url.contains("test")) {
	   Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
	   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
	   context.startActivity(intent);
	   return true;
	}
	return false;
}

意思就是加载的地址中如有“test”,就处理掉。至于怎么处理根据自己的业务来,我这边处理是使用系统跳转出去。这个方法可以帮助解决很多web开发过程中一些特殊需求的逻辑,页面的重定向,页面有电话信息需要处理成APP打开拨号界面等等。
onPageStarted:这个方法很容易理解,就是在页面加载开始的回调,这个一般可以添加一些loading效果,或者提示信息之类的。

onPageFinished:很onPageStarted是一对方法,表示在页面加载完成的回调,这个方法也可以用来处理一些特殊场景的业务。具体实现的功能根据自己的业务需要来处理。

setWebViewClient还有其他的一些相对常用的实现方法:onLoadResoure(加载Url资源回调)、shoudIdInterceptRequest(拦截url请求回调)、onReceivedError(页面地址加载错误回调)、onReceivedSsslError(页面加载SSL错误回调)等等,每个实现的方法大家都可以常识去实现,看看具体的作用,这里不一一做解释,具体使用还是要根据自己的业务来。