在Android中,WebView能夠用來加載http和https網頁到本地應用的控件。可是在默認狀況下,經過loadUrl(String url)方法,能夠順利loadUrl(「http://www.baidu.com」)之類的頁面。可是,當load經過ssl加密的https頁面,可是若是這個網站的安全證書在Android沒法獲得認證,WebView就會變成一個空白頁,而並不會像自帶的瀏覽器同樣彈出提示。所以,咱們必須針對這種狀況進行處理。java
Android 2.2及更高方法
android
首先說的是Android 2.2及更高的處理方式,在2.2及以上系統中處理只須要重載WebViewClient 的 onReceivedSslError便可。web
首先須要import兩個類:瀏覽器
1
2 |
import
android.net.http.SslError
;
import android.webkit.SslErrorHandler ; |
而後複製這段代碼,去掉須要項的註釋。安全
1
2 3 4 5 6 7 8 9 |
WebView webview
=
(WebView
) findViewById
(R.
id.
webview
)
;
webview. setWebViewClient ( new WebViewClient ( ) { @Override public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error ) { //handler.cancel(); 默認的處理方式,WebView變成空白頁 //handler.process();接受證書 //handleMessage(Message msg); 其餘處理 } } ) ; |
若是當重載函數裏面是process()時,系統就會忽略證書的錯誤繼續Load頁面內容,不會顯示空白頁面。ide
Android 2.1及如下方法
可是,重載WebViewClient 的 onReceivedSslError只能在2.2以上系統中使用,2.1和如下系統壓根就沒有SslError的類。不過這好辦,咱們能夠直接複製2.2系統中的WebViewClient.Java 和 SslError.java 文件。
下載地址傳送門:
WebViewClient.java:http://www.oschina.NET/code/explore/android-2.2-froyo/android/webkit/WebViewClient.java
SslError.java:http://www.oschina.Net/code/explore/android-2.2-froyo/android/net/http/SslError.java
咱們只要把上面兩個文件下載來並import到須要處理SSL的活動中,而後import進來便可。這樣就能夠像2.2以上的系統同樣處理便可。
函數