web-dev-qa-db-fra.com

Images non chargées dans la vue Web Android

J'essaie de charger le site dans une vue Web d'application Android.

Le site se charge sans les images, toutes les images du site ne sont pas chargées quel que soit le problème.

Le code pour onCreate est présenté ci-dessous.

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    String url = getResources().getString(R.string.web_url);
    web = (WebView) findViewById(R.id.webview01);
    progressBar = (ProgressBar) findViewById(R.id.progressBar1);

    web.setWebViewClient(new myWebClient());
    web.getSettings().setJavaScriptEnabled(true);
    web.getSettings().setUseWideViewPort(true);
    web.loadUrl(url);
}

Encore une remarque, lorsque javascript est défini sur false avec web.getSettings (). SetJavaScriptEnabled (false); les images se chargent en avertissant que javascript doit être activé pour que le site fonctionne correctement.

Ce site est protégé avec CloudFlare, est-ce que cela pourrait être la raison pour laquelle les images ne sont pas chargées dans la vue Web Android?

13
Ninad

Ajouter

web.getSettings().setDomStorageEnabled(true);

Cela devrait marcher. Gardez le reste tel quel. 

Bien que cela soit une réserve, je ne pense pas qu'il soit recommandé de l'activer par défaut, mais de le désactiver par défaut. Ce paramètre permet à un site Web de stocker des données et de les réutiliser. Ainsi, les images ne sont pas chargées car ce site n'a pas été autorisé à les stocker sur votre appareil. Cela ouvre une boîte de préoccupations de sécurité.

15
Vrashabh Irde

Utilisez simplement cette ligne de code. Je pense que votre problème sera résolu.

     webView.getSettings().setDomStorageEnabled(true);
     webView.getSettings().setAppCacheEnabled(true);
     webView.getSettings().setLoadsImagesAutomatically(true);
     webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
3
Md.Tarikul Islam

Je soupçonne que le problème pourrait être votre client Webview . Utilisez ceci à la place:

webView.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                Log.i(TAG, "Processing webview url click...");
                view.loadUrl(url);
                return true;
            }

            public void onPageFinished(WebView view, String url) {
                Log.i(TAG, "Finished loading URL: " +url);
                if (pDialog.isShowing()) {
                    pDialog.dismiss();
                }
            }

            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Log.e(TAG, "Error: " + description);
                Toast.makeText(FundCardWeb.this, "Page Load Error" + description, Toast.LENGTH_SHORT).show();

            }
        });
2
ifiok

pour moi la combinaison de l'ajout de ceux-ci l'a fait:

webSettings.setDomStorageEnabled(true);
webSettings.setAppCacheEnabled(true);
webSettings.setLoadsImagesAutomatically(true);

Je n'aime pas ajouter de la morue à la nudité lorsque je n'ai pas utilisé:

webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
0
Idan Damri

Cela suffira

webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
0
Sachin Bharadwaj