1. 程式人生 > >關於WebView不能載入網頁,配置,相容適配問題

關於WebView不能載入網頁,配置,相容適配問題


本人最近用Android中WebView控制元件來展示網頁,多方便就不用多說了,閒話少敘,直接撈乾的。

相信大家在用WebView的過程中,有一些同學會遇到WebView不能加載出網頁,網上很多的答案都是設定一些屬性,例如設定如下屬性

mWebView.loadUrl(mUrl);
mWebView.getSettings().setJavaScriptEnabled(true);mWebView.getSettings().setSavePassword(false);
mWebView.setVerticalScrollBarEnabled(false);
mWebView.setHorizontalScrollBarEnabled(false
); // 設定可以支援縮放 mWebView.getSettings().setSupportZoom(true); // 擴大比例的縮放 mWebView.getSettings().setUseWideViewPort(true); // 自適應螢幕 mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); mWebView.getSettings().setLoadWithOverviewMode(true);

大部分手機是可以用以上方法加載出來網頁的,  但因為Android是開源的,各大廠商會有不同的定製,一些Android系統的裝置會不信任任何網頁的安全證書,導致不能載入網頁。如果遇到因為安全證書不能訪問的情況可以用如下 程式碼試試。

mWebView.setWebViewClient(new WebViewClient() {

    @Override
public void onPageFinished(WebView view, String url) {

    }

    @Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
        super.onReceivedError(view, errorCode, description, 
failingUrl); } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { //super.onReceivedSslError(view, handler, error); handler.proceed(); } });

主要運用這個函式 onReceivedSslError 這個函式,這個是因為不信任安全證書不能開啟網頁的回撥, 在其中只要呼叫 handler.proceed();函式就可以,  值得注意的事要把super去掉,因為通過原始碼可以看到  super中有取消載入網頁的方法。

 另外如果是因為其他問題,本人也建議看看有沒有其他錯誤的回撥,本人在這裡沒做深入研究。

這裡再做一點說明WebView設定 WebViewClient的作用是:預設情況下,點選網頁中的連結會使用Android系統自帶的瀏覽器開啟這個網頁,如果希望點選連結會在自己的Browser中響應,必須覆蓋WebView的WebViewClient物件。