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的點擊返回的衝突
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