Android中webView加载html
1.本地放到项目中的html资源文件目录
activity内的代码如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView=(WebView)findViewById(R.id.webView1);
webView.loadUrl("file:///android_asset/www/Omni_Coverage/html/index.html");
//加载http url
/*
*if(isNetworkConnected(mActivity)){
webView.loadUrl("https://219.133.37.94:20035/pus/view/yilife/index.html");
}else{
Utils.showToast("网络连接异常", mActivity);
}
*
*/
initWebView();
setwebSettings();
}
private void initWebView() {//设置WebViewClient回调, 监听webView
webView.setWebViewClient(new WebViewClient() {
@Override //拦截 url 跳转,在里边添加点击链接跳转或者操作
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url != null) {
// view.loadUrl(url);
Intent intent = new Intent(mActivity, WebViewShowActivity.class);
intent.putExtra("StringUrl", url);
startActivity(intent);
return true;
}
return super.shouldOverrideUrlLoading(view, url);
}
//当接收到https错误时,会回调此函数,在其中可以做错误处理
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view, handler, error);
}
//在开始加载网页时会回调
@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);
}
// 加载错误的时候会回调,在其中可做错误处理,比如再请求加载一次,或者提示404的错误页面
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
Intent intent=new Intent();
intent.setAction("com.ybs.server.error");
mActivity.sendBroadcast(intent);
}
});
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
bar.setProgress(newProgress);
}
//在此方法中获取html中的title
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
// Log.i("tag", "title=="+title);
tvtitle.setText(title);
if ("xxx".equals(title)) {
back.setVisibility(View.GONE);
} else if("yyy".equals(title)){
tvtitle.setText("nnn");
back.setVisibility(View.GONE);
}else if("zzz".equals(title)){
back.setVisibility(View.GONE);
}else {
back.setVisibility(View.VISIBLE);
back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (webView.canGoBack()) {
webView.goBack();
}
}
});
}
}
});
}
// 判断网络连接
public boolean isNetworkConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager
.getActiveNetworkInfo();
if (mNetworkInfo != null) {
return mNetworkInfo.isAvailable();
}
}
return false;
}
private void setwebSettings() {
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);// 允许JavaScript执行
settings.setBuiltInZoomControls(true);//启用内置的缩放功能,启用后,用户一旦触摸屏幕,就会出现缩放控制图标。这个图标过上几秒会自动消失,但在3.X系统上,如果图标自动消失前退出当前Activity的话,就会报异常。
settings.setDisplayZoomControls(true);//隐藏webview缩放按钮
//进行缓存,并读取缓存的方法如下
settings.setDomStorageEnabled(true);
settings.setAppCacheMaxSize(1024*1024*8);
String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
settings.setAppCachePath(appCachePath);
settings.setAllowFileAccess(true);
settings.setAppCacheEnabled(true);
}