无法在Android webview中查看帖子内的图像

无法在Android webview中查看帖子内的图像,android,webview,android-webview,android-websettings,Android,Webview,Android Webview,Android Websettings,我正在尝试在Android WebView上加载一个由Wordpress支持的博客。当内容和“标题”图像被显示时,帖子内的图像(我指的是从显示的网页打开帖子)没有被显示(所有文本甚至广告都被显示)。仅在web浏览器上查看网站不会显示此类问题。我尝试过在社区中提出的关于类似问题的各种其他问题中建议的方法,但未能解决我的问题 这是密码 public class MainActivity extends AppCompatActivity { private WebView webView;

我正在尝试在Android WebView上加载一个由Wordpress支持的博客。当内容和“标题”图像被显示时,帖子内的图像(我指的是从显示的网页打开帖子)没有被显示(所有文本甚至广告都被显示)。仅在web浏览器上查看网站不会显示此类问题。我尝试过在社区中提出的关于类似问题的各种其他问题中建议的方法,但未能解决我的问题

这是密码

public class MainActivity extends AppCompatActivity {

    private WebView webView;
    private ProgressDialog mProgress;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = (WebView) findViewById(R.id.cuous_web_view);

        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setAllowContentAccess(true);
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        webSettings.setDomStorageEnabled(true);
        webSettings.setLoadWithOverviewMode(true);
        webSettings.setAppCacheEnabled(true);
        webSettings.setAppCachePath(this.getApplicationContext().
                       getCacheDir().getAbsolutePath());
        webSettings.setLoadsImagesAutomatically(true);
        webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
        webSettings.setSupportZoom(true);
        webSettings.setUserAgentString("Android WebView");
        mixedContentIfRequired(webSettings);
        webSettings.setBuiltInZoomControls(true);

        webView.setWebViewClient(new CuousViewClient());
        webView.setWebChromeClient(new CuousChromeClient());
        webView.loadUrl("http://cuous.com/");
    }

    private void mixedContentIfRequired(WebSettings webSettings) {
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
             webSettings.setMixedContentMode(WebSettings.
                        MIXED_CONTENT_COMPATIBILITY_MODE);
        }
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
            webView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    @Override
    protected void onDestroy() {
        if(mProgress != null && mProgress.isShowing())
            mProgress.dismiss();
        super.onDestroy();
    }

    private class CuousChromeClient extends WebChromeClient  {

        @Override
        public void onProgressChanged(WebView view, int progress) {
            if (mProgress == null) {
                mProgress = new ProgressDialog(MainActivity.this);
                mProgress.show();
                mProgress.setCanceledOnTouchOutside(false);
            }
            mProgress.setMessage("Loading " + String.valueOf(progress) + "%");
            if (progress == 100) {
                mProgress.dismiss();
                mProgress = null;
            }
        }
    }

    private class CuousViewClient extends WebViewClient {

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            ActionBar actionBar = getSupportActionBar();
            if(actionBar.isShowing()) {
                actionBar.hide();
            }
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            return true;
        }


        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            view.loadUrl("javascript:var footer = document.getElementById(\"footer\"); footer.parentNode.removeChild(footer);");
        }

        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
            if(handler != null) {
                handler.proceed();
            }
            else super.onReceivedSslError(view, null, error);
        }
    }
}

嗨,我用我的代码尝试了你的链接。我可以看到图像:。这是你想要的吗

那就是我的维持能力:

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class MainActivity extends Activity {

    private WebView view;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        view = (WebView) this.findViewById(R.id.webView);
        view.getSettings().setJavaScriptEnabled(true);
        view.getSettings().setDomStorageEnabled(true);
        view.setWebViewClient(new MyBrowser());
        view.loadUrl("file:///android_asset/www/index.html"); //try js alert
        view.setWebChromeClient(new WebChromeClient()); // adding js alert support

    }
    private class MyBrowser extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.startsWith("tel:") || url.startsWith("sms:") || url.startsWith("smsto:") || url.startsWith("mailto:") || url.startsWith("mms:") || url.startsWith("mmsto:") || url.startsWith("market:")) {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(intent);
                return true;
            }
            else {
                view.loadUrl(url);
                return true;
            }
        }
    }

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && view.canGoBack()) {
            view.goBack(); //method goback()
            return true;
        }

        return super.onKeyDown(keyCode, event);
    }
}
还可以询问SDK的最低版本是什么

编辑

更新\u应该覆盖

这是一段代码,它将执行其他操作,然后只需在webview中打开url,它控制的url以类似mailto的内容开始。。。。 我对mailto的意思是: 在HTML中,您可以执行以下操作:myname@gmail.com在你的电脑上,它将打开你的outlook。如果你有android,而那段代码不在那里,它会给出一个错误。如果你有那段代码,它会问我是否需要打开它

编辑 那么,如果你用这种方法加载它,它会工作吗

@Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
而不是:

        view.loadUrl("file:///android_asset/www/index.html"); //try js alert

嗨,我用我的代码尝试了你的链接。我可以看到图像:。这是你想要的吗

那就是我的维持能力:

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class MainActivity extends Activity {

    private WebView view;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        view = (WebView) this.findViewById(R.id.webView);
        view.getSettings().setJavaScriptEnabled(true);
        view.getSettings().setDomStorageEnabled(true);
        view.setWebViewClient(new MyBrowser());
        view.loadUrl("file:///android_asset/www/index.html"); //try js alert
        view.setWebChromeClient(new WebChromeClient()); // adding js alert support

    }
    private class MyBrowser extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.startsWith("tel:") || url.startsWith("sms:") || url.startsWith("smsto:") || url.startsWith("mailto:") || url.startsWith("mms:") || url.startsWith("mmsto:") || url.startsWith("market:")) {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(intent);
                return true;
            }
            else {
                view.loadUrl(url);
                return true;
            }
        }
    }

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && view.canGoBack()) {
            view.goBack(); //method goback()
            return true;
        }

        return super.onKeyDown(keyCode, event);
    }
}
还可以询问SDK的最低版本是什么

编辑

更新\u应该覆盖

这是一段代码,它将执行其他操作,然后只需在webview中打开url,它控制的url以类似mailto的内容开始。。。。 我对mailto的意思是: 在HTML中,您可以执行以下操作:myname@gmail.com在你的电脑上,它将打开你的outlook。如果你有android,而那段代码不在那里,它会给出一个错误。如果你有那段代码,它会问我是否需要打开它

编辑 那么,如果你用这种方法加载它,它会工作吗

@Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
而不是:

        view.loadUrl("file:///android_asset/www/index.html"); //try js alert

你好,史蒂文。SDK的最低版本是SDK 19(我想是Android 4.4)以后的版本。至于截图,我不是真的指那个。也许我没有在问题中正确地解释它。试着打开已经打开的帖子提到“健康卡丁车附属公司”。我指的是当我打开那篇文章时应该看到的图片。顺便问一下,您能否解释一下
shouldOverrideUrlLoading
if
语句中的这些行是什么意思?非常感谢您在
shouldOverrideUrlLoading
中解释这一点,至于屏幕截图(编辑),是的,我指的是这个。您可以在web浏览器中看到文章中嵌入的图像,但由于某些原因,它不会显示在webview中。是的,我看到了,但文章中的一些图像会显示出来。我已经从需要下载照片的地方查看了一下,以便在您的页面中显示它们。如果scr=“”以“…”开头,则不会加载。很奇怪,你拥有那个网站吗?不完全是,我把它当作一个“学习项目”。域名/网站由我认识的人拥有。顺便说一下,我碰巧在网上找到了一些项目。只需编辑该项目的loadUrl行即可。问题是我找不到任何额外的代码行。也许这个链接会有帮助?如果你或其他任何人能解释一下重要的区别,我将不胜感激。你好,史蒂文。SDK的最低版本是SDK 19(我想是Android 4.4)以后的版本。至于截图,我不是真的指那个。也许我没有在问题中正确地解释它。试着打开已经打开的帖子提到“健康卡丁车附属公司”。我指的是当我打开那篇文章时应该看到的图片。顺便问一下,您能否解释一下
shouldOverrideUrlLoading
if
语句中的这些行是什么意思?非常感谢您在
shouldOverrideUrlLoading
中解释这一点,至于屏幕截图(编辑),是的,我指的是这个。您可以在web浏览器中看到文章中嵌入的图像,但由于某些原因,它不会显示在webview中。是的,我看到了,但文章中的一些图像会显示出来。我已经从需要下载照片的地方查看了一下,以便在您的页面中显示它们。如果scr=“”以“…”开头,则不会加载。很奇怪,你拥有那个网站吗?不完全是,我把它当作一个“学习项目”。域名/网站由我认识的人拥有。顺便说一下,我碰巧在网上找到了一些项目。只需编辑该项目的loadUrl行即可。问题是我找不到任何额外的代码行。也许这个链接会有帮助?如果你或其他任何人能解释一下重要的区别,我将不胜感激。