android 中webview基本使用的方法小结

       随着使用h5和其他前端技术开发的webapp 应用越来越多,使用原生开发的app 有时候需要嵌入一些新的网页,众所周知webview控件中可以加载网页。下面就一些使用方法进行简单的小结,其实使用技巧还是蛮多的。

网络上相关文章:

点击Android混合开发之WebView使用总结打开链接

点击打Android混合开发之WebView与Javascript交互开链接

感谢博主。

0.WebView的实质就是loadUrl,所以前提是设备接入网络,首先进行网络的判断。

 添加网络权限:
   <uses-permission android:name="android.permission.INTERNET" />
网络状态的判断:
<span style="font-size:14px;">// 网络状态
	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;
	</span>
 这只是最简单的网络判断,当然是可以进行更细致的判断,比如无线,4G 等。

1.只让本应用程序的webview加载网页而不调用外部浏览器的办法

  设置WebViewClient,并重写WebViewClient的shouldOverrideUrlLoading方法返回true。系统默认返回的是false。

mWebView.setWebViewClient(new WebViewClient(){

      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // TODO Auto-generated method stub
        view.loadUrl(url);
        return true;
      }
    });

  2.网页加载完成与加载失败的监听。

重写WebViewClient即可。然后进行设置 mwebView.setWebViewClient(new webClient());

private class webClient extends WebViewClient{

		@Override
		public void onPageFinished(WebView view, String url) {
			// TODO Auto-generated method stub
			super.onPageFinished(view, url);
		}

		@Override
		public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
			// TODO Auto-generated method stub
			super.onReceivedError(view, errorCode, description, failingUrl);
			view.loadUrl("file:///android_asset/defaultpage/index.html"); //加载一个默认的网页
		}
		
		
	}

3.webView相关属性的设置。

WebSettings webSettings = webView.getSettings();
		webSettings.setUseWideViewPort(true);// 设置此属性,可任意比例缩放
		webSettings.setLoadWithOverviewMode(true); // 充满全屏幕
		webSettings.setBuiltInZoomControls(false);
		webSettings.setJavaScriptEnabled(true);
		webSettings.setAppCacheEnabled(true);
		// 设置缓存模式
		webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);

		// 开启 DOM storage API 功能
		webSettings.setDomStorageEnabled(true);
		webView.setHorizontalScrollBarEnabled(false); // 水平不显示滚动条
		webView.setOverScrollMode(View.OVER_SCROLL_NEVER); // 禁止即在网页顶出现一个空白,又自动回去。
		webView.setWebChromeClient(new webChromClient());
		webView.setWebViewClient(new webClient());

附一个示例代码:布局文件比较简单,放了一个WebView控件.

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class HtmlInfoActivity extends Activity {
	private WebView webView;

	// guo add
	private ProgressDialog dialog = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);

		setContentView(R.layout.systemsinfo_layout);
		webView = (WebView) findViewById(R.id.webView);

		WebSettings webSettings = webView.getSettings();
		webSettings.setUseWideViewPort(true);// 设置此属性,可任意比例缩放
		webSettings.setLoadWithOverviewMode(true); // 充满全屏幕
		webSettings.setBuiltInZoomControls(false);
		webSettings.setJavaScriptEnabled(true);
		webSettings.setAppCacheEnabled(true);
		// 设置缓存模式
		webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);

		// 开启 DOM storage API 功能
		webSettings.setDomStorageEnabled(true);
		webView.setHorizontalScrollBarEnabled(false); // 水平不显示滚动条
		webView.setOverScrollMode(View.OVER_SCROLL_NEVER); // 禁止即在网页顶出现一个空白,又自动回去。
		webView.setWebChromeClient(new webChromClient());
		webView.setWebViewClient(new webClient());

		// Intent intent = getIntent();//得到上一个Activity传递的值
		// String str=intent.getStringExtra("url");

		String str = "https://www.baidu.com";

		dialog = ProgressDialog.show(HtmlInfoActivity.this, null, "正在加载中,请稍后···");
		webView.loadUrl(str);

	}

	private class webChromClient extends WebChromeClient {

		@Override
		public void onProgressChanged(WebView view, int newProgress) {
			// TODO Auto-generated method stub
			super.onProgressChanged(view, newProgress);
		}
	}

	private class webClient extends WebViewClient {

		@Override
		public void onPageStarted(final WebView view, String url, Bitmap favicon) {
			// TODO Auto-generated method stub
			super.onPageStarted(view, url, favicon);

		}

		@Override
		public void onPageFinished(WebView view, String url) {
			// TODO Auto-generated method stub
			// super.onPageFinished(view, url);
			dialog.dismiss();

		}

		@Override
		public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
			// TODO Auto-generated method stub
			super.onReceivedError(view, errorCode, description, failingUrl);

			// guo add
			Toast.makeText(HtmlInfoActivity.this, "网页加载出错!", Toast.LENGTH_LONG).show();

			view.loadUrl("file:///android_asset/defaultpage/index1.html"); // 加载一个默认的本地网页
		}

		@Override
		public boolean shouldOverrideUrlLoading(WebView view, String url) {
			// TODO Auto-generated method stub
			view.loadUrl(url);
			return true;
		}
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
	}

	// 网络状态判断
	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;

	}

}








  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值