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
- 慕課網_《iOS基礎教程之介面初體驗》學習總結iOS
- 慕課網-LinuxC語言結構體-學習筆記LinuxC語言結構體筆記
- 慕課網的中國式線上“慕課”模式模式
- thinkphp開發 網易雲課堂-線上IT學習|視訊教程|慕課網PHP
- WebView深度學習(二)之全面總結WebView遇到的坑及優化WebView深度學習優化
- 慕課網Python入門練習題---Python
- 慕課網玩轉資料結構課程之陣列資料結構陣列
- 《文獻管理與資訊分析》慕課學習心得
- JavaScript(轉載自 計科學院 慕課網)JavaScript
- 慕課網《前端JavaScript面試技巧》學習筆記(2)-原型和原型鏈前端JavaScript面試筆記原型
- 慕課網招聘golang講師Golang
- WebView的使用總結WebView
- UFLDL:史丹佛大學深度學習課程總結深度學習
- 慕課平臺
- 慕課全套資料,需要的同學自己拿
- Android學習之 WebView使用小結AndroidWebView
- android webview總結AndroidWebView
- 慕課網大資料開發工程師課程大資料工程師
- 慕課網go語言體系課搶先體驗Go
- 深度學習DeepLearning.ai系列課程學習總結:7. 深層神經網路理論學習深度學習AI神經網路
- 網路、HTTP相關學習總結HTTP
- MongoDB的學習總結MongoDB
- docker的學習總結Docker
- pandas的學習總結
- 學習總結
- android WebView總結(轉)AndroidWebView
- 我的慕課實戰課程上線了
- 慕課網 餓了麼 vue2.0 專案Vue
- iOS學習筆記14 網路(三)WebViewiOS筆記WebView
- 去哪兒網專案學習總結
- sqlldr的學習與總結SQL
- mysqlimport學習總結MySqlImport
- Maven學習總結Maven
- MyBatis 學習總結MyBatis
- awk 學習總結
- JNI 學習總結