2013-08-22 149 views
14

我在android中實現webview應用程序。當我試圖加載https網址一兩次完成活動。 Agian試圖加載https url它顯示網頁不可用。請找到下面的圖片我得到了什麼。Webview無法在android中加載https url?

enter image description here

當我再次在該網址上點擊,那麼它顯示的網站開通。

我用下面的代碼來加載url。

webView = (WebView) findViewById(R.id.webView); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.loadUrl("https://www.facebook.com"); 
webView.clearView(); 
webView.measure(100, 100); 
webView.getSettings().setUseWideViewPort(true); 
webView.getSettings().setLoadWithOverviewMode(true); 



    webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 

     @SuppressLint("NewApi") 
     @Override 
     public void onReceivedSslError(WebView view, SslErrorHandler handler,  SslError error) { 
      super.onReceivedSslError(view, handler, error); 

      // this will ignore the Ssl error and will go forward to your site 
      handler.proceed(); 
      error.getCertificate(); 
     } 
    }); 

請任何幫助球員.......

在此先感謝

+0

是我加了INTERNET權限 – Hareesh

+0

這對我很有用。請檢查您的網絡權限。 –

+0

@Hareesh我也在電話中測試過。 – TheFlash

回答

8

添加在您的manifest.xml互聯網設置

<uses-permission android:name="android.permission.INTERNET" /> 

,並檢查您可以訪問互聯網在您的設備上。

-4

試試這個位置

WebView webview = (WebView)findViewById(R.id.webView); 
    Webview.setBackgroundColor(0); 
    webview.getSettings().setJavaScriptEnabled(true); 
    webview.loadUrl("https://www.facebook.com"); 
    webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
+1

...爲什麼它應該幫助? – Selvin

1

一種可能是一個競爭條件。

在設置WebViewClient之前,您正在加載https://www.facebook.com/,因此如果您從facebook獲得足夠快的響應,您的OnReceivedSslError()實現將永遠不會被調用。

這可以解釋爲什麼它適用於某些人,而不適用於其他人,並且在頁面重新加載時總是有效。

另外,我認爲你應該從shouldOverrideUrlLoading()返回false,如果你想加載頁面而不是嘗試重新加載頁面 - 這可能會導致無限遞歸/崩潰 - 可能取決於時間。

+0

你有一些代碼嗎? –

+0

上面的OP列出的代碼與我的類似,除了在WebView,WebViewClient設置正確之後加載URL *,並且我從shouldOverrideUrlLoading()返回false。 – MZB

2

將此重寫方法添加到您的WebViewClient實現中。您需要使用Android SDK 2.2(API級別8)或更高版本進行編譯。該方法出現在2.2(API級別8)的公共SDK中,但是我們已經在運行2.1,1.6和1.5的設備上對它進行了測試,並且它也可以在這些設備上運行(顯然,這種行爲一直存在)。

WebView.setWebViewClient(new WebViewClient() { 

    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){ 

     handler.proceed(); 

    } 
    }); 
12

嘗試下面使用屬性:

 webView = (WebView) findViewById(R.id.webView1); 
     WebSettings settings = webView.getSettings(); 
     settings.setJavaScriptEnabled(true); 
     settings.setDomStorageEnabled(true); 
+0

這個工作! http://stackoverflow.com/questions/7416096/android-webview-not-loading-https-url/28668862#28668862 – KOTIOS

+2

此行: settings.setDomStorageEnabled(true);在我的情況下, 做了詭計。非常感謝。 – Virthuss

+1

對我來說,setDomStorageEnabled也有竅門! – olleh

-3

添加您的清單文件

<uses-permission android:name="android.permission.INTERNET" /> 

當你曾經訪問網頁內容需要獲得互聯網的許可,則僅會加載。

5

刪除該字符串:

super.onReceivedSslError(view, handler, error); 

並在此方法

public boolean shouldOverrideUrlLoading(WebView view, String url) { 

又將返回False
這樣的:

return false; 

它幫助我

3

您應該刪除這個

super.OnReceiveSslError(view,handler,error); 
0

2016年12月回答:

如果發生這種情況只在與Android 5+,只有在某些頁面某些設備,它最有可能是由於這個鉻錯誤:

https://www.chromium.org/developers/androidwebview/webview-ct-bug

的解決方案是:

  • 告訴客戶更新的WebView到55+(可能不容易上的所有設備)
  • 告訴客戶向後移動他們的系統時鐘數週(不是很好的解決方案)
  • 獲得非Symantec證書