1. 程式人生 > >android通過webView載入第三方h5應用,無法載入圖片和播放視訊的解決方法

android通過webView載入第三方h5應用,無法載入圖片和播放視訊的解決方法

只需給webview的配置中加上下面這段程式碼即可解決

這是Android5.0 WebView中Http和Https混合問題,在Android5.0 以及以上的系統,當WebView載入的連結為Https開頭,但是連結裡面的內容,比如圖片為Http連結,這時候,圖片就會載入不出來。

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
getSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}

問題相關知識分析:
從Android5.0以後,當一個安全的站點(https)去載入一個非安全的站點(http)時,需要配置Webview載入內容的混合模式,一共有如下三種模式:
MIXED_CONTENT_NEVER_ALLOW:Webview不允許一個安全的站點(https)去載入非安全的站點內容(http),比如,https網頁內容的圖片是http連結。強烈建議App使用這種模式,因為這樣更安全。
MIXED_CONTENT_ALWAYS_ALLOW:在這種模式下,WebView是可以在一個安全的站點(Https)里加載非安全的站點內容(Http),這是WebView最不安全的操作模式,儘可能地不要使用這種模式。
MIXED_CONTENT_COMPATIBILITY_MODE:在這種模式下,當涉及到混合式內容時,WebView會嘗試去相容最新Web瀏覽器的風格。一些不安全的內容(Http)能被載入到一個安全的站點上(Https),而其他型別的內容將會被阻塞。這些內容的型別是被允許載入還是被阻塞可能會隨著版本的不同而改變,並沒有明確的定義。這種模式主要用於在App裡面不能控制內容的渲染,但是又希望在一個安全的環境下執行。
分析:

在Android5.0以下,預設是採用的MIXED_CONTENT_ALWAYS_ALLOW模式,即總是允許WebView同時載入Https和Http;而從Android5.0開始,預設用MIXED_CONTENT_NEVER_ALLOW模式,即總是不允許WebView同時載入Https和Http。

雖然官網給出的建議是,為了安全考慮,使用MIXED_CONTENT_NEVER_ALLOW模式,但是在實際引用中,當我們的伺服器已經升級到Https,但是一些頁面的資源是第三方的,我們不能要求第三方也都升級到Https,所以我們只能根據系統版本,用程式碼去設定載入模式為MIXED_CONTENT_ALWAYS_ALLOW。