到底如何使用webview通路https的url——處理sslerror呢?
在android中,webview是用來load http和https網頁到本地應用的控件。在預設情況下,通過loadurl(string url)方法,可以順利load。但是,當load有ssl層的https頁面時,如果這個網站的安全證書在android無法得到認證,webview就會變成一個空白頁,而并不會像pc浏覽器中那樣跳出一個風險提示框。是以,我們必須針對這種情況進行處理。(這個證書限于2.1版本以上的android 系統才可以)
android的處理要用到兩個類
(1)import android.net.http.sslerror;
(2)import android.webkit.sslerrorhandler;
具體的用法如下:
webview wv = (webview) findviewbyid(r.id.webview);
wv.setwebviewclient(new webviewclient(){
public void onreceivedsslerror(webview view, sslerrorhandler handler, sslerror error){
//handler.cancel(); 預設的處理方式,webview變成空白頁
//handler.process();接受證書
//handlemessage(message msg); 其他處理
}
檢視android浏覽器源碼在tabcontrol.java類中subwindowclient方法中找,如果隻是簡單的接受所有證書的話,就直接調process()方法就行了
但是sslerror是從2.2才開始提供的。之前的版本怎麼辦?
可以把android2.2中onreceivedsslerror()的源碼導入到自己的工程中,具體方法如下:
先把android2.2包中的sslerror.java和webviewclient.java導入到自己的工程中,在導入時需要建立和android2.2源碼包中一樣的包名。然後在用webview的時候導包就導自己工程裡的這個包名就行!