????項(xiàng)目上線前夕局待,驚聞測(cè)試童鞋扯著嗓子喊:有問題绰姻!尼瑪亡问,嚇我一個(gè)趔趄官紫,這節(jié)骨眼可不能出幺蛾子。原來兩部Android9.0的機(jī)器圖片加載有問題州藕,另外webview嵌入的下載鏈接點(diǎn)擊沒響應(yīng)束世。
問題一:華為(Android9.0)和One Plus(Android9.0)兩部手機(jī)上圖片加載不出來。項(xiàng)目加載圖片框架用的Glide床玻,在其他版本都沒任何問題毁涉,唯獨(dú)Android9.0加載不出來,斷定應(yīng)該是Android9.0有相關(guān)變更锈死,查閱官方文檔原來框架安全性關(guān)于TLS發(fā)生了變更薪丁,如圖:
說的通俗易通一點(diǎn)就是,Android9.0默認(rèn)不允許明文傳輸即HTTP請(qǐng)求被忽略馅精,要么改用HTTPS严嗜,要么設(shè)置相關(guān)配置允許HTTP:
1、在res/xml路徑下新建文件"network_security_config.xml",
2洲敢、network_security_config.xml配置如下:
3漫玄、在AndroidManifest.xml中<application>配置android:networkSecurityConfig="@xml/network_security_config"
配置完成后,圖片加載正常压彭。
問題二:項(xiàng)目里Webview內(nèi)嵌推廣鏈接睦优,有個(gè)注冊(cè)功能,注冊(cè)成功后自動(dòng)跳轉(zhuǎn)到相關(guān)APP下載頁面壮不,點(diǎn)擊下載頁面的下載按鈕沒響應(yīng)汗盘。設(shè)置setDownloadListener監(jiān)聽,回調(diào)onDownloadStart不調(diào)用询一。
Android5.x的機(jī)型測(cè)試都OK隐孽,Android9.0沒反應(yīng)。經(jīng)調(diào)試發(fā)現(xiàn)健蕊,與setSupportMultipleWindows有關(guān)菱阵。setSupportMultipleWindows這個(gè)方法是什么意思呢?setSupportMultipleWindows默認(rèn)的是false缩功,也就是說WebView默認(rèn)不支持新窗口晴及,并非WebView不能打開多個(gè)頁面,而是點(diǎn)擊頁面上的鏈接嫡锌,當(dāng)它的target屬性是_blank時(shí)虑稼,它會(huì)在當(dāng)前你所看到的頁面繼續(xù)加載那個(gè)鏈接琳钉。而不是重新打開一個(gè)窗口。
當(dāng)你設(shè)置為true時(shí)蛛倦,就代表你想要你的WebView支持多窗口歌懒,但是一旦設(shè)置為true,必須要重寫WebChromeClient的onCreateWindow方法胰蝠。
解決:除了設(shè)置setDownloadListener外歼培,還需設(shè)置WebChromeClient,并重新onCreateWindow茸塞,如下:
測(cè)試正常躲庄。