图片未在android webview中加载

时间:2015-04-27 06:11:27

标签: android android-webview

我正在尝试在Android应用网页视图中加载网站。

网站在没有图片的情况下加载,网站上的所有图片都没有加载可能出现的问题。

onCreate的代码如下所示。

 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);
}

还有一点需要注意,当我使用web.getSettings()将javascript设置为false时.setJavaScriptEnabled(false);图片加载时会发出警告,提示应启用javascript以正确运行网站。

此网站受CloudFlare保护,这可能是Android网页视图中未加载图片的原因吗?

7 个答案:

答案 0 :(得分:17)

添加

web.getSettings().setDomStorageEnabled(true);

这应该有效。保持原样。

虽然有一点需要注意,我不认为默认情况下建议启用它,默认情况下禁用它。该设置允许网站存储数据并重复使用。因此,未加载图像,因为不允许此站点将其存储在您的设备上。这引发了一系列安全问题。

答案 1 :(得分:4)

只需使用这行代码即可。我认为你的问题将得到解决。

     webView.getSettings().setDomStorageEnabled(true);
     webView.getSettings().setAppCacheEnabled(true);
     webView.getSettings().setLoadsImagesAutomatically(true);
     webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

答案 2 :(得分:4)

我在 Android 9.0 中遇到了类似的问题。网站html中的图像使用的是 http 而不是 https 。 然后,我用https更改了所有http,一切正常! 使用mySql中的sql查询将http更改为https非常容易。

我在询问是否对任何人有帮助!

UPDATE table_name SET column_name = replace(column_name, '<img src="http://', '<img src="https://')

答案 3 :(得分:2)

我怀疑问题可能是您的webview客户端。 请改用:

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();

            }
        });

答案 4 :(得分:1)

我也遇到过同样的问题。在网络视图中,带有http URL的图像未加载到我的应用中。以下解决方案解决了我的问题,

webview.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

但是在Android 9中,上述解决方案有时会引发问题,在这种情况下,请在清单文件中添加以下行。

android:usesCleartextTraffic="true"

答案 5 :(得分:0)

就足够了

webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

答案 6 :(得分:0)

对我来说,添加这些内容的组合可以做到这一点:

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

我不喜欢在不添加鳕鱼的时候不使用它:

webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);