WebViewClient顾名思义,这是webView的客户端,它里面有客户端回调监听,常用的监听方法有失败,验证,加载url控制等,如果只是需要在本webView显示内容的话只需要设置不需要重写方法
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//view 加载的布局,url加载的路径,如果想用自己的webView加载改路径可以重写该方法
if (url.endsWith(".apk") || (!url.startsWith("http") && !url.startsWith("https") && !url.startsWith("ftp"))) {//判断是否是下载和不是http https ftp协议,使用其他应用打开
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
PackageManager packageManager = context.getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(
intent, 0);//获取能处理次任务的应用列表
if (activities.size() > 0) {//有可以处理的应用就启动
context.startActivity(intent);
return true;
} else {//没有可以处理的应用
if (url.contains("alipays")) {//支付宝相关
} else if (url.contains("weixin")) {//微信相关
}
return true;
}
}
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return shouldOverrideUrlLoading(view, request.getUrl().toString());
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {//开始加载回调
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {//加载完成回调
super.onPageFinished(view, url);
}
@Override
public void onLoadResource(WebView view, String url) {//资源加载回调
super.onLoadResource(view, url);
}
@Override
public void onPageCommitVisible(WebView view, String url) {//加载HTTP响应的body内容回调
super.onPageCommitVisible(view, url);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {//失败回调
super.onReceivedError(view, errorCode, description, failingUrl);
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {//失败回调
super.onReceivedError(view, request, error);
}
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {//HTTP认证错误回调
super.onReceivedHttpError(view, request, errorResponse);
}
@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {//更新浏览历史记录,获取更新的url地址回调
super.doUpdateVisitedHistory(view, url, isReload);
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {//SSL认证错误回调
handler.proceed(); //表示等待证书响应
handler.cancel(); //表示挂起连接,为默认方式
handler.handleMessage(null); //可做其他处理
// super.onReceivedSslError(view, handler, error);
}
@Override
public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {//给予主机应用程序异步处理按键事件的机会
return super.shouldOverrideKeyEvent(view, event);
}
@Override
public void onScaleChanged(WebView view, float oldScale, float newScale) {//页面大小改变回调
super.onScaleChanged(view, oldScale, newScale);
}
@Override
public void onReceivedLoginRequest(WebView view, String realm, @Nullable String account, String args) {//请求自动登录回调
super.onReceivedLoginRequest(view, realm, account, args);
}