简单介绍WebView加载H5页面的方法
注:由于android版本的不同webview加载h5拦截方法也会不同下面代码已标出分界线android7.0
WebSettings settings = wv_goods_detail.getSettings();//wv_goods_detail为初始化的webview
settings.setJavaScriptEnabled(true);
if (Build.VERSION.SDK_INT >= 21) {//android的SDK的版本判断
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
settings.setLoadsImagesAutomatically(true);// 设置可以自动加载图片
settings.setAppCacheEnabled(true);// 应用可以有缓存
settings.setDomStorageEnabled(true);// 设置可以使用localStorage
// 优先使用缓存(这样会导致同一个url,若该页面修改了,则会出现此url还是用的本地缓存的)
// settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
settings.setCacheMode(WebSettings.LOAD_DEFAULT);
settings.setAllowFileAccess(true);// 可以读取文件缓存(manifest生效)
settings.setPluginState(WebSettings.PluginState.ON);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
// 加速WebView加载的方法
settings.setRenderPriority(WebSettings.RenderPriority.HIGH); // 提高渲染的优先级
wv_goods_detail.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
//7.0以上
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if (request.getUrl()!=null){
if (Uri.parse("此处为拦截的url").equals(request.getUrl())){//拦截指定的URL
//拦截之后的各种操作
}else {
finish();
}
}
return true; //代表url由WebView处理
}
//7.0以下
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(@NonNull WebView view, @NonNull String url) {
if (url != null) {
if ("此处为拦截的url".equals(url)){//拦截指定的URL
//拦截之后的各种操作
}else {
finish();
}
}
return true; //代表url由WebView处理
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
});
wv_goods_detail.loadUrl("此处为加载的h5的url");