1. 基本写法
WebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
String scheme = Uri.parse(url).getScheme();
if("http".equals(scheme)||"https".equals(scheme)){
return false;
}else{
try{
Intent intent=new Intent();
intent.setData(Uri.parse(url));
startActivity(intent);
}catch(Exception e){
e.printStackTrace();
}
}
return true;
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
MyToastUtil.showFastToast(MyWebViewActivity.this,"网页上有错误:"+error.getErrorCode());
}
}
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
super.onReceivedHttpError(view, request, errorResponse);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
errorCode=errorResponse.getStatusCode();
bridge.setErrorCode(errorResponse.getStatusCode());
view.loadUrl("file:///android_asset/html/error.html");
}else{
view.loadUrl("file:///android_asset/html/error.html");
}
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
});
//设置加载进度
WebView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
if(newProgress==100){
ProgressBar.setVisibility(View.GONE);
}else{
ProgressBar.setVisibility(View.VISIBLE);
ProgressBar.setProgress(newProgress);
}
}
});
//加载网页,同时
WebView.loadUrl(url);//, header);
[注1]WebJsBridge bridge 是Java与JS交互的一个实现类
2. 基本配置
private void setWebView(WebView mWebView) {
WebSettings webSetting = mWebView.getSettings();
webSetting.setJavaScriptEnabled(true);
webSetting.setJavaScriptCanOpenWindowsAutomatically(true);
webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
webSetting.setSupportZoom(true);
webSetting.setBuiltInZoomControls(true);
webSetting.setDisplayZoomControls(false);
webSetting.setLoadWithOverviewMode(true);
webSetting.setUseWideViewPort(true);
webSetting.setCacheMode(WebSettings.LOAD_DEFAULT);
webSetting.setLoadsImagesAutomatically(true);
webSetting.setAllowFileAccess(true);
webSetting.setSupportMultipleWindows(false);
webSetting.setAppCacheEnabled(true);
webSetting.setDatabaseEnabled(true);
webSetting.setDomStorageEnabled(true);
webSetting.setGeolocationEnabled(true);
webSetting.setAppCachePath(this.getDir("webcache", 0).getPath());
webSetting.setDatabaseEnabled(true);
webSetting.setAppCacheEnabled(true);
webSetting.setGeolocationDatabasePath(this.getDir("geolocation", 0)
.getPath());
}