2013-08-22 23 views
14

Tôi đang triển khai ứng dụng webview trong Android. Khi tôi đang cố tải url https một hoặc hai lần, hoàn thành hoạt động. Người cố gắng tải url https trang này hiển thị trang web không khả dụng. xin vui lòng tìm thấy hình ảnh dưới đây những gì tôi có.Chế độ xem web không thể tải url https trong android?

enter image description here

Khi tôi bấm vào url đó một lần nữa, sau đó nó cho thấy websit.

Tôi đã sử dụng mã bên dưới để tải 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(); 
     } 
    }); 

vui lòng bất cứ chàng trai giúp đỡ .......

Cảm ơn trước

+0

vâng tôi đã thêm quyền INTERNET – Hareesh

+0

Điều đó có hiệu quả đối với tôi. Vui lòng kiểm tra quyền truy cập mạng của bạn. –

+0

@Hareesh tôi cũng đã kiểm tra. Hãy kiểm tra tính khả dụng của internet trong điện thoại. – TheFlash

Trả lời

8

Thêm cài đặt internet trong manifest.xml bạn

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

và kiểm tra xem bạn có thể truy cập internet trên thiết bị của bạn.

-4

Hãy thử điều này

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

... và tại sao nó sẽ giúp ích? – Selvin

1

Một khả năng đây là một điều kiện chủng tộc.

Bạn đang tải https://www.facebook.com/ trước khi thiết lập WebViewClient, do đó, có khả năng bạn triển khai OnReceivedSslError() sẽ không bao giờ được gọi nếu bạn nhận được phản hồi đủ nhanh từ facebook.

Điều này sẽ giải thích lý do tại sao nó hoạt động đối với một số người, không phải cho người khác và luôn hoạt động nếu trang được tải lại. Ngoài ra, tôi nghĩ bạn chỉ nên trả về false từ shouldOverrideUrlLoading() nếu bạn muốn trang tải thay vì cố gắng tải lại trang - điều này có thể gây ra một đệ quy vô hạn/sụp đổ - có thể phụ thuộc vào thời gian.

+0

bạn có một số mã không? –

+0

Mã được liệt kê bởi OP ở trên tương tự như của tôi ngoại trừ việc tải URL * sau * WebView, WebViewClient đã được thiết lập đúng - và tôi trả về false từ shouldOverrideUrlLoading(). – MZB

2

Thêm phương pháp ghi đè này vào việc triển khai WebViewClient của bạn. Bạn sẽ cần phải biên dịch nó với Android SDK 2.2 (API cấp 8) trở lên. Phương thức xuất hiện trong SDK công khai là 2.2 (API cấp 8) nhưng chúng tôi đã thử nghiệm nó trên các thiết bị chạy 2.1, 1.6 và 1.5 và nó cũng hoạt động trên các thiết bị đó (vì vậy rõ ràng là hành vi đã ở đó).

WebView.setWebViewClient(new WebViewClient() { 

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

     handler.proceed(); 

    } 
    }); 
12

Hãy thử sử dụng bên dưới thuộc tính:

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

hoạt động này! http://stackoverflow.com/questions/7416096/android-webview-not-loading-https-url/28668862#28668862 – KOTIOS

+2

Dòng này: settings.setDomStorageEnabled (true); đã thực hiện thủ thuật trong trường hợp của tôi. Cảm ơn rất nhiều. – Virthuss

+1

Đối với tôi, setDomStorageEnabled đã làm thủ thuật! – olleh

-3

Thêm file manifest của bạn

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

Khi bao giờ bạn truy cập vào nội dung web cần phải nhận được sự cho phép của internet thì chỉ có nó sẽ được tải.

5

Xóa chuỗi này:

super.onReceivedSslError(view, handler, error); 

và trong phương pháp này

public boolean shouldOverrideUrlLoading(WebView view, String url) { 

lần lượt trở về sai
như thế này:

return false; 

Nó giúp tôi

3

Bạn nên loại bỏ này

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

tháng 12 năm 2016 trả lời:

Nếu điều này xảy ra chỉ trên các thiết bị nhất định với Android 5+ và chỉ trên các trang nhất định, nó có thể do lỗi crom này:

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

giải pháp là một trong hai:

  • nói với khách hàng để cập nhật webview đến 55+ (có thể không được dễ dàng trên mọi thiết bị)
  • nói với khách hàng để di chuyển đồng hồ hệ thống của họ lạc hậu một vài tuần (không phải là một giải pháp tốt đẹp)
  • có được một tổ chức phi Symantec cert
Các vấn đề liên quan