WebView學習的總結————慕課網
1.簡介
通過一個連結去載入網頁的時候我們通常會使用一個WebView的控制元件,這裡相信都是知道的!!
2.簡單使用
相信webView.loadUrl();大家都很屬性,但是隻用此操作,會使得你的應用是開啟系統的瀏覽器去開啟url的,這時候我們怎麼處理
webView.loadUrl("http://www.downxia.com/downinfo/70636.html#softdown");
webView.setWebViewClient(new WebViewClient(){
//讓他在自己的activity中開啟網頁,
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return super.shouldOverrideUrlLoading(view, url);
}
定義一個progressDialog來實現網頁未加在出來時中間顯示載入進度和溫馨提示
webView.setWebViewClient(new MyWebViewClient())
private class MyWebViewClient extends WebViewClient{
@Override
public void onPageStarted(WebView view, String url,Bitmap favicon) {//網頁頁面開始載入的時候
if (progressDialog == null) {
progressDialog=new ProgressDialog(MainActivity.this);
progressDialog.setMessage("資料載入中,請稍後。。。");
progressDialog.show();
webView.setEnabled(false);// 當載入網頁的時候將網頁進行隱藏
}
super.onPageStarted(view, url,favicon);
}
@Override
public void onPageFinished(WebView view, String url) {//網頁載入結束的時候
//super.onPageFinished(view, url);
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
progressDialog = null;
webView.setEnabled(true);
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view ,String url){ //網頁載入時的連線的網址
view.loadUrl(url);
return false;
}
}
網頁重新整理 webView.reload();
3.下載檔案
webView.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent,String contentDisposition, String mimetype, long contentLength) {
// 開啟一個執行緒去下載物件
System.out.println("<<<<<<<<<<<<<<<<"+url);
if(url.endsWith(".apk")){
//自己去下載
new HttpThread(url).start();
//通過系統下載
// Uri uri =Uri.parse(url);
// Intent intent = new Intent(Intent.ACTION_VIEW,uri);
// startActivity(intent);
}
}
});
程式碼的註釋很清楚就不說了
4.錯誤處理(網路404等)
webView.setWebViewClient(new WebViewClient(){
//當沒有網路,或者是連線錯誤的時候使用
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
view.loadUrl("file:///android_asset/error.html");//引人一個asset下的一個載入錯誤頁面
//也可是使用自定義的控制元件去顯示
//webView.setVisibility(View.GONE);
//提示控制元件.setVisibility(View.VISIBLE);
}
});
5.同步cookie
使用者登入之後,我們通常在客戶端報存使用者的資訊,我們可以把登入的cookie資訊傳給伺服器,讓伺服器做一個表示,避免重新登入。那我們通過客戶端和webView的cookie同步,
並在activity中設定:
6.WebView和js呼叫的混淆問題
我們在打包的時候混淆程式碼,打包完成之後會導致了js的方法呼叫失敗。我們 只要在proguard.cfg資料夾中新增
-keep class com.example.webview.WebHost {
public <methods>;
}
7.在activity中使用,回退網頁介面使用
//覆蓋Activity類的onKeyDown(int keyCoder,KeyEvent event)方法
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack(); //goBack()表示返回WebView的上一頁面
return true;
}
finish();//結束退出程式
return false;
}
//其實也就是改寫了onBackPressed()方法
8.忽略證書
webView.setWebViewClient(new WebViewClient() {
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){
// handler.cancel(); // Android預設的處理方式
handler.proceed(); // 接受所有網站的證書
//handleMessage(Message msg); // 進行其他處理
}
});
demo的連結 http://www.oschina.net/code/snippet_2702417_55745
相關博文連結:
相關文章
- 慕課網《探秘Spring AOP》學習總結Spring
- 慕課網《Netty入門之WebSocket初體驗》學習總結NettyWeb
- 慕課網Python入門練習題---Python
- thinkphp開發 網易雲課堂-線上IT學習|視訊教程|慕課網PHP
- 慕課網玩轉資料結構課程之陣列資料結構陣列
- 神經網路與深度學習 課程複習總結神經網路深度學習
- JavaScript(轉載自 計科學院 慕課網)JavaScript
- 慕課網招聘golang講師Golang
- android webview總結AndroidWebView
- 《文獻管理與資訊分析》慕課學習心得
- UFLDL:史丹佛大學深度學習課程總結深度學習
- 慕課網大資料開發工程師課程大資料工程師
- 慕課作業
- 慕課平臺
- 慕課全套資料,需要的同學自己拿
- Java課後習題總結Java
- 慕課網go語言體系課搶先體驗Go
- Android Webview和ScrollView衝突和WebView使用總結AndroidWebView
- docker的學習總結Docker
- MongoDB的學習總結MongoDB
- 網路、HTTP相關學習總結HTTP
- iOS學習筆記14 網路(三)WebViewiOS筆記WebView
- 學習總結
- 我的慕課實戰課程上線了
- 史上最全慕課網免費職業路徑,總有一個適合你
- Android中使用WebView遇到的問題總結:AndroidWebView
- 學習python有關統計基礎部分課程總結Python
- 去哪兒網專案學習總結
- 網路基礎 Modbus協議學習總結協議
- Mooc下載器:中國大學mooc慕課影片課件課程下載工具,如何在電腦端下載中國大學mooc慕課影片課程課件資料到本地?
- ConstraintLayout 學習總結AI
- BOM學習總結
- tkinter學習總結
- vue學習總結Vue
- HSF學習總結
- ElasticSearch 學習總結Elasticsearch
- Storm學習總結ORM
- vue 學習總結Vue
- lua 學習總結