老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

Androidwebview加載https鏈接錯誤或無響應怎么辦

這篇文章給大家分享的是有關Android webview加載https鏈接錯誤或無響應怎么辦的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

創新互聯公司是專業的香格里拉網站建設公司,香格里拉接單;提供做網站、成都做網站,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行香格里拉網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!

Android是什么

Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。

1、設置WebView接受所有網站的證書

在認證證書不被Android所接受的情況下,我們可以通過設置重寫WebViewClient的onReceivedSslError方法在其中設置接受所有網站的證書來解決,重寫WebView的onReceivedSslError方法,添加handler.proceed方法,但App如果上架GooglePlay會被警告的。所以建議使用以下的第二個方法。

具體代碼如下:

webView.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){
handler.proceed();
}
});

注:在重寫WebViewClient的onReceivedSslError方法時,注意一定要去除onReceivedSslError方法的super.onReceivedSslError(view, handler, error);,否則設置無效。

2、啟用mixed content

Android webView 從 Lollipop 開始默認不開MixedContentMode,因此,我們開啟即可滿足我們大多數需求。

webView.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings()
.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
});

在Android5.0中,WebView方面做了些修改,如果你的系統target api為21以上:

系統默認禁止了mixed content和第三方cookie。可以使用setMixedContentMode() 和 setAcceptThirdPartyCookies()以分別啟用。

系統現在可以智能選擇HTML文檔的portion來繪制。這種新特性可以減少內存footprint并改進性能。若要一次性渲染整個HTML文檔,可以調用這個方法enableSlowWholeDocumentDraw(),如果你的app的target api低于21:系統允許mixed content和第三方cookie,并且總是一次性渲染整個HTML文檔。

在使用WebView的類中添加如下代碼:

// android 5.0以上默認不支持Mixed Content
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
 webView.getSettings().setMixedContentMode(
  WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
}

結果:

我的問題并不是出現在這些地方,而是出現了在加載Url時,部分Url使用的事http而不是https,導致無法加載,功能實現不了。那么要求后臺開發人員把http改成https。就這樣,成功了。或者還可以使用一些第三方庫來加載也行。

測試:

1、調用高德地圖沒法顯示,前端工程師用了http……那么改為https

2、部分功能沒實現,因為后臺的沒有加證書…..那么,全部改回http

補充知識:Android WebView加載網頁鏈接遇到的那些坑

本來覺得十分簡單的問題,結果遇到了不少坑,到現在都不敢保證不出問題,只是解決了大部分問題。。。

下面是列出幾個問題

在webview中跳轉別的頁面無響應

在webview中下載文件無響應

部分網址鏈接無法顯示

部分網址打開自動跳轉到瀏覽器

1.在webview中跳轉別的頁面無響應

修改之前代碼如下:

 WebSettings webSettings = webView.getSettings();
 //設置WebView屬性,能夠執行Javascript腳本
 webSettings.setJavaScriptEnabled(true);
 //設置可以訪問文件
 webSettings.setAllowFileAccess(true);
 //設置支持縮放
 webSettings.setBuiltInZoomControls(true);
 webView.loadUrl(link);

 webView.setWebViewClient(new webViewClient ());

修改之后加了不少webview的設置包括:

webSettings.setAppCacheEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.supportMultipleWindows();
webSettings.setAllowContentAccess(true);
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setSavePassword(true);
webSettings.setSaveFormData(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setLoadsImagesAutomatically(true);

webView.setWebChromeClient(new WebChromeClient());//這行最好不要丟掉

當然,這些屬性可能有些不是必須要添加的,為了盡量滿足多種需求,所以我都添加了。

修改完成后就可以在webview中跳轉別的url鏈接了,就算是解決了第一個問題吧。

2.在webview中下載文件無響應

因為本身webview不具備下載功能,所以需要讓系統處理或者自定義下載。

webview給我們提供了一個下載監聽接口,下面我們來實現下載處理:

class MyDownLoad implements DownloadListener {
  @Override
  public void onDownloadStart(String url, String userAgent,
         String contentDisposition, String mimetype, long contentLength) {
   if (url.endsWith(".apk")) {
    /**
    * 通過系統下載apk
    */
    Uri uri = Uri.parse(url);
    Intent intent = new Intent(Intent.ACTION_VIEW,uri);
    startActivity(intent);
   }
  }
 }

然后再設置中添加:

webView.setDownloadListener(new MyDownLoad());

這里是將下載功能交給系統來處理了,并沒有特殊需求所以就不自定義了。

3.部分網址鏈接無法顯示,報錯net::err_unknown_url_scheme

由于我們有時候自定義了WebViewClient,內容大致如下:

private class webViewClient extends WebViewClient {
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
   view.loadurl(url)//返回true代表在當前webview中打開,返回false表示打開瀏覽器
   return super.shouldOverrideUrlLoading(view,url);  }

  @Override
  public void onPageStarted(WebView view, String url, Bitmap favicon) {
   if(!dialog.isShowing()) {
    dialog.show();
   }
   super.onPageStarted(view, url, favicon);
  }

  @Override
  public void onPageFinished(WebView view, String url) {
   if(dialog.isShowing()){
    dialog.dismiss();
   }
   super.onPageFinished(view, url);
  }
 }

注意shouldOverrideUrlLoading方法,平時我們可能會在其中設置view.loadurl(url),正是這句代碼導致部分網頁打不開,這可能是webview的本身加載網頁有限制吧。所以我把這句去掉了,在返回時返回了true(true表示在當前webview中打開網頁,false則更傾向于瀏覽器打開網頁)。這樣做,發現部分網頁仍然打不開。于是直接刪掉了webView.setWebViewClient(new webViewClient ()),而webView.setWebChromeClient(new WebChromeClient())不能刪,結果網頁是打開了,但有的則自動跳轉到瀏覽器打開的。但我們的需求是不要打開瀏覽器。。。

4.部分網址打開自動跳轉到瀏覽器

接到上面所講,打開部分網址跳轉到瀏覽器了,如何不讓他跳轉呢,返回true可以禁止跳轉,但部分網址在webview中無法打開,接下來,不給它直接返回true或false了,而是返回super,讓它父類處理,結果也并沒有調到瀏覽器并且網頁也打開了,現在暫時就這樣結尾了做到了大部分網址的兼容。

感謝各位的閱讀!關于“Android webview加載https鏈接錯誤或無響應怎么辦”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


新聞名稱:Androidwebview加載https鏈接錯誤或無響應怎么辦
文章出自:http://www.xueling.net.cn/article/jhccgi.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 无人在线视频观看免费 | 欧美噜噜噜 | 天堂网WWW天堂在线 亚洲欧美日韩愉拍自拍 | 国产亚洲精品美女在线 | yy6080午夜八戒国产亚洲 | 性刺激的大陆三级视频 | jizz亚洲大全 | 视频在线观看入口黄最新永久免费国产 | 色噜噜噜噜噜噜亚洲精品 | 国产精品久AAAAA片 | 奇米视频在线观看 | 激情欲成人av在线观看av | 在线视频自拍 | 匈牙利xxxx性hd极品 | 别揉我奶头~嗯~啊~视频免费网站 | 亚洲欧美国产国产综合一区 | 五月天婷婷色综合 | 日韩伦理中文字幕 | 免费成年视频 | 国产精品爆乳在线播放第一人称 | 欧美激情国产精品视频一区二区 | 日本三级在线看一区二区 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 顶级欧美色妇XXXXX | 91动漫在线观看 | 国产精品久久久久久久久免费高清 | 日本一区二区三区爆乳 | 粉嫩一区二区三区在线看 | 一级毛片免费视频观看 | 99精品久久99久久久久胖女人 | 欧美色呦呦 | 日韩女优一区二区三区 | 久久精品国产亚洲AV麻豆~ | 精品久久香蕉国产线看观看亚洲 | 中文字幕第35页 | 亚洲精品免费一区二区三区 | 饥渴女上位高潮呻吟在线播放 | 女人被躁到高潮嗷嗷叫游戏 | 狠狠插网站 | 国产三级农村妇女做受 | 精品人妻无码视频中文字幕一区二区三区 |