Android webview Mixed Content無法顯示圖片解決


轉自:http://blog.csdn.net/crazy_zihao/article/details/51557425

前言

  在使用WebView加載https資源文件時,如果認證證書不被Android認可,那么會出現無法成功加載對應資源問題。那么,我們就要針對這一狀況作出對應的處理。

解決步驟

1. 啟用mixed content

在Android5.0中,WebView方面做了些修改,如果你的系統target api為21以上:

  • 系統默認禁止了mixed content和第三方cookie。可以使用setMixedContentMode() 和 setAcceptThirdPartyCookies()以分別啟用。
  • 系統現在可以智能選擇HTML文檔的portion來繪制。這種新特性可以減少內存footprint並改進性能。若要一次性渲染整個HTML文檔,可以調用這個方法enableSlowWholeDocumentDraw()
  • 如果你的app的target api低於21:系統允許mixed content和第三方cookie,並且總是一次性渲染整個HTML文檔。 
    在使用WebView的類中添加如下代碼:
  • [html]  view plain  copy
     
     print?
    1. // android 5.0以上默認不支持Mixed Content  
    2. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {  
    3.     webView.getSettings().setMixedContentMode(  
    4.         WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);  
    5. }  

2. 設置WebView接受所有網站的證書

在認證證書不被Android所接受的情況下,我們可以通過設置重寫WebViewClient的onReceivedSslError方法在其中設置接受所有網站的證書來解決,具體代碼如下:

 

[html]  view plain  copy
 
 print?
  1. webView.setWebViewClient(new WebViewClient() {  
  2.             @Override  
  3.             public void onReceivedSslError(WebView view,  
  4.                     SslErrorHandler handler, SslError error) {  
  5.                 // TODO Auto-generated method stub  
  6.                 // handler.cancel();// Android默認的處理方式  
  7.                 handler.proceed();// 接受所有網站的證書  
  8.                 // handleMessage(Message msg);// 進行其他處理  
  9.             }  
  10. });  

 

注:在重寫WebViewClientonReceivedSslError方法時,注意一定要去除onReceivedSslError方法的super.onReceivedSslError(view, handler, error);,否則設置無效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM