webview的使用

1.设置webview加载的网页url地址

webview.loadUrl(url地址);

2.设置webview的各种事件

2.1 webview.setWebViewClient
webview.setWebViewClient(new webViewClient()); //比较简单处理请求:比如加载网页Javascript dialogs(js脚本对话框), favicons(添加收藏的标志), titles(标题), 和 progress(进度条、网页加载前、网页加载后的事件等等

重写的方法1(当webview访问其他url地址时调用): view为当前的webview;     url为当前 webview跳转到新的webview的 url地址;  
@Override
		public boolean shouldOverrideUrlLoading(WebView view, String url) {
			view.loadUrl(url);
			
			return true;
		}

重写的方法2(当前网页开始加载时调用): favicon为当前webview的图标
@Override
		public void onPageStarted(WebView view, String url, Bitmap favicon) {
			//这里初始化并显示progressdielog
			if(progDlg == null || !progDlg.isShowing()&&refreshView==null){  
	            progDlg = new ProgressDialog(getContext());  
	            progDlg.setMessage("正在加载,请稍候。。。");  
	            progDlg.setCanceledOnTouchOutside(false);
	        // WEBVIEW初始化时先不要加载图片
			if (Build.VERSION.SDK_INT >= 19) {
				mWvFragmentIndex.getSettings().setLoadsImagesAutomatically(true);
			} else {
				mWvFragmentIndex.getSettings().setLoadsImagesAutomatically(false);
			}}}


重写的方法3(当前网页加载完成时调用):
// 网页加载完成
		@Override
		public void onPageFinished(WebView view, String url) {
		         //progressdielog消失
			progDlg.dismiss();
			// 框架加载完成后开始加载图片
			if (!mWvFragmentUser.getSettings().getLoadsImagesAutomatically()) {
				mWvFragmentUser.getSettings().setLoadsImagesAutomatically(true);
			}

		}


2.2 webview.setWebChromeClient

webview.setWebChromeClient(new );//在进行兼容互联网上附加javascript的页面的时候和调用javascript对话框的时候,或者功能较为复杂的内嵌操作的时候,建议使用WebChromeClient

// 获得当前页面的标题
		webview.setWebChromeClient(new WebChromeClient() {
			@Override
			public void onReceivedTitle(WebView view, String title) {
				webViewTitleList.add(title);//将当前网页title加到listview当中
				ac.webViewTitleCallBack(title);//将网页标题回调给mainactivity
			}
		});

3.处理webview和activity的返回按钮冲突

思路:1、在fragment中重写onKeyDown方法
         2、在mainactivity中重写onKeyDown方法并调用相应fragment的onKeyDown方法
         3、但是没有解决主页面双击退出与webview的点击返回的冲突

关键代码:fragment中:
public boolean onKeyDown1(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			if (webview.canGoBack()) {//如果该webview还可以返回上一个页面
				
				webViewBack ();//调用webviewBack方法返回上一个页面
				
			} else {
				webViewTitleList.clear();//如果不能返回,说明已到webview的首页,则清空保存网页title的listview
				
				return false;
			}
		//	webViewBack();
		
		}
		return true;

	}

webViewback()方法:
public void webViewBack () {
		if (mWvFragmentAll.canGoBack()) {
			
			webViewTitleList.remove(webViewTitleList.size()-1);//返回时删除当前title listview的数据
			ac.webViewTitleCallBack(webViewTitleList.get(webViewTitleList.size()-1));//回调上一个页面的标题给首页
			
			mWvFragmentAll.goBack();// 返回上一页面
		} 
	}



mainactivity中:
@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
			
			((IndexFragment) indexFragment).onKeyDown1(keyCode, event);//调用fragment中的onkeyDown<span style="font-family: Arial, Helvetica, sans-serif;">				</span>
		return false;
	}

4.获取webview中的cookie数据

CookieManager cookieManager = CookieManager.getInstance();
		String CookieStr = cookieManager.getCookie(HttpModle.HTTP_URL_USER);//获取cookie数据

		String[] cookieArr = CookieStr.split(";");//根据:拆分cookie字符串
实例:cookie数据 

//PHPSESSID
PHPSESSID=s9ts5t4pa0n6arieIscnkavtd6;

//url编码的购物车列表,解码后为json字符串
Cartlist=%7B%2215%22%3A%7B%22num%22%3W3%2C%22shenyu%22%3A%223582%22%2C%22money%22%3A%221.00%22%7D%2C%2213%22%3A%7B%2; 
cartlistOutputString = URLDecoder.decode(Cartlist, "UTF-8");//urldecod编码转utf-8

//MD5加密后的用户名
uid=d66dBVECGVIJVAGJVlNYVgGTVFFTDgUGVVJQUwVQ; 

//MD5加密后的密码
ushell=d66dBVEGAVIJVAAJVgECGFNdVFEBUGIBUQFTVlRZBAAGAVVWGgcDVgFQUQ4FVgUCXVcDWVMCGAlQBFYFGw

其他的如果用到后期再加...



webview的使用_第1张图片

你可能感兴趣的:(android,webView)