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

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





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章