2015-07-20 28 views
13
ile gösterilmiyor

Uygulamam HTTPS ile barındırılan HTML sayfasını göstermek için bir web görünümü açar, bir resim içerir (http den geliyor). Bazı cihazlarda görüntü gösterilmiyor ancak diğer tüm cihazlar için çalışıyor. Nexus, Samsung s6/s4, Moto G2 ve diğerleri gibi birden fazla cihazla kontrol ettim. Sadece Samsung S4/S6'da, nexus görüntüsü gösterilmiyor. ama tüm diğer cihazlar için çalışıyor. Hatta WI-FI, veri taşıyıcısı ve birden çok işletim sistemi sürümü ile denedim ama şans yok.WebView resimleri HTTPS

Lütfen bu sorunu çözmek için yardım edin.

bazı gözlemler: -

1) Her bir aygıtta i aynı uyarıyı alıyorum: - [bloke] sayfasını kısmındaki 'sayfa url' 'HTTPS üzerinden yüklendi, ancak olmayan içeriğin görüntülendiği image source ': Bu içeriğin HTTPS üzerinden de yüklenmesi gerekir. Web tarayıcısında açılıyorum, tüm cihazlarda iyi çalışıyorsanız, aynı sayfaya 2) Aynı sayfa.

Benim Kod

mWebView = (WebView) findViewById(R.id.m_web_view); 
    WebSettings webSettings = mWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    mainUrl = bean.getUrl(); 
    mWebView.loadUrl("javascript:window.location.reload(true)"); 
    mWebView.loadUrl(mainUrl); 
    mWebView.setWebViewClient(new myWebClient()); 



    private class myWebClient extends WebViewClient { 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
    //some code 
    } 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     //some code 
    } 

    @Override 
    public void onReceivedSslError(WebView view, SslErrorHandler handler, 
      SslError error) { 
     handler.proceed(); 
    } 


} 
+0

, kendini imzalı sertifikanın bir sorundur olabilir: burada

webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); 

Dokümantasyon: Bu durumda , kullanmakta Lollipop varsayılan WebView ayarı değiştirebilirsiniz: //stackoverflow.com/questions/5977977/does-the-web-view-on-android-support-ssl –

cevap

43

WebViews'ta HTTP ve HTTPS kullanarak karma içerikler varsayılan olarak Lollipop'tan başlatılır. Lollipop ile çalışan cihazlarda mümkün değil mi? Eğer bu http kontrol edebilirsiniz http://developer.android.com/reference/android/webkit/WebSettings.html#setMixedContentMode(int)

+0

Teşekkürler savior :) –

+0

doğru çözüm, teşekkür ederim. o bir kullanıcı saldırmak için kullanılacak olasılığı daha düşüktür görüntüleri, videoları ve diğer içerikleri sağlayacak beri Google'dan buraya gelen herkes için –

+0

@AjitSharma, daha iyi bir seçenek 'WebSettings .MIXED_CONTENT_COMPATIBILITY_MODE' kullanmak olabilir. – hvaughan3

3

kullanın follwoing kodu. herhangi bir hata İşte oluştu Aslında

WebView webview= (WebView) findViewById(R.id.my_webview); 
    webview.setWebViewClient(new WebViewClient() { 
    public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) { 
    handler.proceed() ; 
    } 

} 
+0

Çalışmıyor. Yorum kodumu ekliyorum. Lütfen özlediğim bir şey varsa bana haber verin. –

2

bir örnektir o kadar kullanmak zorunda kalacak bu işlemek için Web görünümündeki bir SSL özelliği ise aşağıdaki kodu kullanarak https WebViewClient ait onReveivedSslError yöntemini uzatmak ve devam açabilir aşağıdaki kod.

engine = (WebView) findViewById(R.id.my_webview); 
engine.setWebViewClient(new WebViewClient() { 
public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) { 
handler.proceed() ; 
} 
} 

Ve işleyicide webview image url'yi kolayca çalıştırabilirsiniz.