日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android webview加載https鏈接錯誤或無響應的解決

瀏覽:218日期:2022-09-25 14:42:02

最近做無線WiFi的時候,在最后認證成功的時候會彈出一個廣告頁,于是用webview去加載了一下,結果沒反應,打印url出來看了一下,發現是https格式的,在使用WebView加載https資源文件時,如果認證證書不被Android認可,那么會出現無法成功加載對應資源問題。那么,我們就要針對這一狀況作出對應的處理。

于是百度了一下,這里記錄一下,給大家做個參考:

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

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

具體代碼如下:

webView.setWebViewClient(new WebViewClient(){@Overridepublic 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(){@Overridepublic 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??梢允褂胹etMixedContentMode() 和 setAcceptThirdPartyCookies()以分別啟用。

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

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

// android 5.0以上默認不支持Mixed Contentif (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,讓它父類處理,結果也并沒有調到瀏覽器并且網頁也打開了,現在暫時就這樣結尾了做到了大部分網址的兼容。

總結:本人對webview了解也是有限,所以并不深入只是解決部分問題,可能理解也有偏差,如有問題請見諒。希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品网站在线看| 国产麻豆精品| 日韩精品中文字幕一区二区| 久久福利毛片| 欧美日韩精品一本二本三本 | 久久国产毛片| 亚洲福利久久| 激情综合激情| 欧美一级精品| 日韩一区二区三区高清在线观看| 欧美日韩国产一区精品一区| 亚洲资源av| 日韩精品免费一区二区夜夜嗨| 欧美一区91| 国产日韩免费| 久久久久免费av| 91精品韩国| 私拍精品福利视频在线一区| 久久三级福利| 午夜亚洲精品| 国产精品视频一区视频二区| 日韩精品首页| 五月天综合网站| 久久99精品久久久野外观看| 国产在线日韩| 欧美激情福利| 亚洲免费黄色| 日韩一区二区三区精品| 国产美女高潮在线观看| 亚洲视频播放| 荡女精品导航| 日韩中文字幕亚洲一区二区va在线| 麻豆国产精品| 久久夜色精品| 欧美激情视频一区二区三区免费 | 亚洲精品在线二区| 日韩天堂在线| 中文字幕亚洲精品乱码| 亚洲三级欧美| 免播放器亚洲一区| 国产欧美丝祙| 欧美肉体xxxx裸体137大胆| 欧美日韩免费观看一区=区三区| 欧美亚洲tv| 亚洲免费观看| 日韩国产网站| 国产精品1区| 亚洲精品三级| 久久久久久免费视频| 日日摸夜夜添夜夜添国产精品| 日韩av首页| 国产欧美另类| 免费在线看一区| 欧美丝袜一区| 激情黄产视频在线免费观看| 国产欧美一区二区色老头| 亚洲欧美视频一区二区三区| 日韩久久一区二区三区| 狂野欧美性猛交xxxx| 中文字幕av一区二区三区四区| 成人日韩在线观看| 一二三区精品| 亚洲二区免费| 久久久久九九精品影院| 亚洲色图国产| 国产精品97| 日韩中文字幕在线一区| 久久精品播放| 国产传媒在线观看| 国产精品红桃| 日韩福利视频导航| 快播电影网址老女人久久| 国内精品美女在线观看| 欧美在线不卡| 午夜精品亚洲| 欧美日韩免费观看一区=区三区| 欧美精品高清| 欧美激情亚洲| 91亚洲一区| 国产一区精品福利| 麻豆精品视频在线| 国产精品日韩精品在线播放| 日韩激情啪啪| 久久大逼视频| 亚洲少妇一区| 在线视频亚洲| 亚洲精品极品少妇16p| 91精品久久久久久久久久不卡| 精品入口麻豆88视频| 欧美视频二区| 国产精品日本一区二区三区在线| 欧美激情五月| 日韩精选在线| 中文字幕视频精品一区二区三区| 国产视频一区二| 欧美日韩亚洲国产精品| 日本国产亚洲| 午夜久久av | 综合一区在线| 另类激情亚洲| 欧美aa在线视频| 亚洲精品无播放器在线播放| 一区在线免费| 蜜臀国产一区| 欧美aa在线视频| 日韩av资源网| 国产色综合网| 亚洲激情偷拍| 超碰99在线| 99精品电影| 99久久九九| 久久久久.com| 亚洲先锋成人| 亚洲激情另类| 日韩欧美2区| 日韩av一区二区三区四区| 久久福利精品| 日日夜夜免费精品视频| 免费在线观看一区二区三区| 蜜臀久久99精品久久久画质超高清| 亚洲精选91| 日本一区免费网站| 福利视频一区| 亚洲欧洲另类| 日韩精品三区四区| 欧美日韩伊人| 麻豆国产一区| 九九在线精品| 亚洲色图综合| 精品久久久网| 国产精品亚洲一区二区三区在线观看| 亚洲在线一区| 精品国产一区二区三区性色av| 欧美a级一区二区| 精品久久久网| 精品国产91| 一区二区三区视频免费观看| 蜜桃一区二区三区在线观看| 日本v片在线高清不卡在线观看| 在线免费观看亚洲| 欧美一区二区三区久久精品| 成人亚洲一区| 亚洲精品伊人| 欧美aa在线观看| 亚洲欧美日本视频在线观看| 日本强好片久久久久久aaa| 色老板在线视频一区二区| 国产欧美日韩亚洲一区二区三区| 国产精品福利在线观看播放| 视频一区欧美精品| 99精品电影| 欧美激情网址| 好吊日精品视频| 国产欧美日韩视频在线| 久久成人一区| 亚洲另类av| 午夜久久99| 国产亚洲欧美日韩精品一区二区三区 | 视频一区视频二区中文| 日本中文字幕不卡| 免费视频亚洲| 久久久久久色| 日韩在线观看中文字幕| 亚洲高清毛片| 水蜜桃久久夜色精品一区| 国产日韩欧美在线播放不卡| 成人美女视频| 欧美一区成人| 亚洲精选91| 视频一区在线播放| 国产亚洲午夜| 国户精品久久久久久久久久久不卡| 精品精品国产三级a∨在线| 日本一区二区中文字幕| 人人爽香蕉精品| 91综合视频| 久久久国产精品入口麻豆| 国产日本精品| 国产一精品一av一免费爽爽| 亚洲资源网站| 亚洲一级大片| 一区二区电影| 在线日韩成人| 亚洲精品三级| 91伊人久久| 日本少妇一区二区| 国产亚洲精品自拍| 国产免费成人| 国产精品日韩欧美一区| 亚洲精品一二三区区别| 欧美国产免费| 久久69成人| 97精品国产一区二区三区| 精品国产欧美日韩一区二区三区| 美女在线视频一区| 精品一区二区三区亚洲| 国产 日韩 欧美 综合 一区| 日韩国产欧美三级| 日韩和欧美的一区| 国产精品久久久久av蜜臀|