电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

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

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

1、設置WebView接受所有網(wǎng)站的證書

在認證證書不被Android所接受的情況下,我們可以通過設置重寫WebViewClient的onReceivedSslError方法在其中設置接受所有網(wǎng)站的證書來解決,重寫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,因此,我們開啟即可滿足我們大多數(shù)需求。

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方面做了些修改,如果你的系統(tǒng)target api為21以上:

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

系統(tǒng)現(xiàn)在可以智能選擇HTML文檔的portion來繪制。這種新特性可以減少內(nèi)存footprint并改進性能。若要一次性渲染整個HTML文檔,可以調(diào)用這個方法enableSlowWholeDocumentDraw(),如果你的app的target api低于21:系統(tǒng)允許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);}

結(jié)果:

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

測試:

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

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

補充知識:Android WebView加載網(wǎng)頁鏈接遇到的那些坑

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

下面是列出幾個問題

在webview中跳轉(zhuǎn)別的頁面無響應

在webview中下載文件無響應

部分網(wǎng)址鏈接無法顯示

部分網(wǎng)址打開自動跳轉(zhuǎn)到瀏覽器

1.在webview中跳轉(zhuǎn)別的頁面無響應

修改之前代碼如下:

WebSettings webSettings = webView.getSettings(); //設置WebView屬性,能夠執(zhí)行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中跳轉(zhuǎn)別的url鏈接了,就算是解決了第一個問題吧。

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

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

webview給我們提供了一個下載監(jiān)聽接口,下面我們來實現(xiàn)下載處理:

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

然后再設置中添加:

webView.setDownloadListener(new MyDownLoad());

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

3.部分網(wǎng)址鏈接無法顯示,報錯net::err_unknown_url_scheme

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

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),正是這句代碼導致部分網(wǎng)頁打不開,這可能是webview的本身加載網(wǎng)頁有限制吧。所以我把這句去掉了,在返回時返回了true(true表示在當前webview中打開網(wǎng)頁,false則更傾向于瀏覽器打開網(wǎng)頁)。這樣做,發(fā)現(xiàn)部分網(wǎng)頁仍然打不開。于是直接刪掉了webView.setWebViewClient(new webViewClient ()),而webView.setWebChromeClient(new WebChromeClient())不能刪,結(jié)果網(wǎng)頁是打開了,但有的則自動跳轉(zhuǎn)到瀏覽器打開的。但我們的需求是不要打開瀏覽器。。。

4.部分網(wǎng)址打開自動跳轉(zhuǎn)到瀏覽器

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

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

標簽: Android
相關(guān)文章:
主站蜘蛛池模板: 北京晚会活动策划|北京节目录制后期剪辑|北京演播厅出租租赁-北京龙视星光文化传媒有限公司 | 钢丝绳探伤仪-钢丝绳检测仪-钢丝绳探伤设备-洛阳泰斯特探伤技术有限公司 | TYPE-C厂家|TYPE-C接口|TYPE-C防水母座|TYPE-C贴片-深圳步步精 | 【铜排折弯机,钢丝折弯成型机,汽车发泡钢丝折弯机,线材折弯机厂家,线材成型机,铁线折弯机】贝朗折弯机厂家_东莞市贝朗自动化设备有限公司 | 扬州汇丰仪表有限公司 | 济南网站建设_济南网站制作_济南网站设计_济南网站建设公司_富库网络旗下模易宝_模板建站 | 热工多功能信号校验仪-热电阻热电偶校验仿真仪-金湖虹润仪表 | 新密高铝耐火砖,轻质保温砖价格,浇注料厂家直销-郑州荣盛窑炉耐火材料有限公司 | 不锈钢管件(不锈钢弯头,不锈钢三通,不锈钢大小头),不锈钢法兰「厂家」-浙江志通管阀 | 精密五金加工厂-CNC数控车床加工_冲压件|蜗杆|螺杆加工「新锦泰」 | 多功能真空滤油机_润滑油全自动滤油机_高效真空滤油机价格-重庆润华通驰 | 361°官方网站| 无味渗透剂,泡沫抑尘剂,烷基糖苷-威海威能化工有限公司 | 在线浊度仪_悬浮物污泥浓度计_超声波泥位计_污泥界面仪_泥水界面仪-无锡蓝拓仪表科技有限公司 | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | 北京翻译公司_同传翻译_字幕翻译_合同翻译_英语陪同翻译_影视翻译_翻译盖章-译铭信息 | 小型铜米机-干式铜米机-杂线全自动铜米机-河南鑫世昌机械制造有限公司 | 【中联邦】增稠剂_增稠粉_水性增稠剂_涂料增稠剂_工业增稠剂生产厂家 | 广西绿桂涂料--承接隔热涂料、隔音涂料、真石漆、多彩仿石漆等涂料工程双包施工 | 游戏版号转让_游戏资质出售_游戏公司转让-【八九买卖网】 | 喷砂机厂家_自动喷砂机生产_新瑞自动化喷砂除锈设备 | 结晶点测定仪-润滑脂滴点测定仪-大连煜烁 | 热回收盐水机组-反应釜冷水机组-高低温冷水机组-北京蓝海神骏科技有限公司 | 企业微信scrm管理系统_客户关系管理平台_私域流量运营工具_CRM、ERP、OA软件-腾辉网络 | 帽子厂家_帽子工厂_帽子定做_义乌帽厂_帽厂_制帽厂 | 高精度-恒温冷水机-螺杆式冰水机-蒸发冷冷水机-北京蓝海神骏科技有限公司 | 车间除尘设备,VOCs废气处理,工业涂装流水线,伸缩式喷漆房,自动喷砂房,沸石转轮浓缩吸附,机器人喷粉线-山东创杰智慧 | 阿尔法-MDR2000无转子硫化仪-STM566 SATRA拉力试验机-青岛阿尔法仪器有限公司 | 橡胶弹簧|复合弹簧|橡胶球|振动筛配件-新乡市永鑫橡胶厂 | 蓝牙音频分析仪-多功能-四通道-八通道音频分析仪-东莞市奥普新音频技术有限公司 | 山东商品混凝土搅拌楼-环保型搅拌站-拌合站-分体仓-搅拌机厂家-天宇 | 山东齐鲁漆业有限公司【官网】-工业漆专业生产厂家 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 明渠式紫外线杀菌器-紫外线消毒器厂家-定州市优威环保 | 北钻固控设备|石油钻采设备-石油固控设备厂家 | 玻璃钢罐_玻璃钢储罐_盐酸罐厂家-河北华盛节能设备有限公司 | 证券新闻,热播美式保罗1984第二部_腾讯1080p-仁爱影院 | 河南空气能热水器-洛阳空气能采暖-洛阳太阳能热水工程-洛阳润达高科空气能商行 | 净化车间装修_合肥厂房无尘室设计_合肥工厂洁净工程装修公司-安徽盛世和居装饰 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 10吨无线拉力计-2吨拉力计价格-上海佳宜电子科技有限公司 |