Android Webview 部分圖片顯示不出來問題
阿新 • • 發佈:2018-12-30
最近發現在華為Mate 10 上面我們app的內建webview會有部分圖片不展示,直接就圖裂了。
經過繞了一大圈後才解決了問題,其實問題原因很簡單,但是分析過程不順利。拿出來分享下,希望可以幫助大家少走彎路。
簡單說下這個問題的背景
1.我們的新聞圖片在除了華為Mate 10 上的android 機都可以正常展示圖片。但是到了Mate 10 發現圖裂了
2.專案使用的是騰訊X5瀏覽器核心
3.Mate10上只有一部分圖片不能展示,有些是可以的,並且我們的網頁放到系統的自帶瀏覽器也能展示
解決步驟:
1.先根據X5文件測試下
您的app開啟網頁http://soft.imtt.qq.com/browser/tes/feedback.html,顯示000000表示載入的是系統核心,顯示大於零的數字表示載入了x5核心(該數字是x5核心版本號)
發現壓根就沒使用X5核心,使用的是系統核心……
然後嘗試解決,但是X5核心就是啟動不了。
好吧,那就換個思路,為什麼系統的核心不能展示圖片呢
2.分析下我們的HTML程式碼 拿出了圖片部分的連結。用我們APP的WebView載入
發現居然是可以直接展示的!這就奇怪了,圖片單獨訪問可以展示,放在H5程式碼就不行。
3.最後翻了翻API發現
對,就是這裡 5.0以上是預設不允許用安全的來源里加載不安全的資源(英語渣,見諒)。
看了下我們的H5程式碼 還真是,H5的URL是HTTPS,而資源圖片的是HTTP。
所以設定下
WebSettings webSetting = webview.getSettings();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { webSetting.setMixedContentMode(android.webkit.WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); }
OK,問題解決了