1. 程式人生 > >Android Webview 部分圖片顯示不出來問題

Android Webview 部分圖片顯示不出來問題

最近發現在華為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,問題解決了