【问题标题】:Android Webview Image not loadedAndroid Webview 图像未加载
【发布时间】:2017-07-19 19:17:38
【问题描述】:

我用WebView 制作了一个简单的应用程序。但有些图片无法加载。

正确(在我的电脑中):

错误(在模拟器中):

正确:

错误:没有横幅

于是我用 Chrome debug 进行了调试,发现我的代码被修改了。

我不会像 noscriptstyle="display:none;visibility:hidden;" 这样添加。

谁知道如何解决这个问题?

代码在这里

public class MainActivity extends Activity {

private WebView webView;
private ProgressBar mPBar;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    webView = (WebView) findViewById(R.id.webView1);
    mPBar = (ProgressBar) findViewById(R.id.progress01);
    WebSettings set = webView.getSettings();

    set.setJavaScriptEnabled(true);
    set.setCacheMode(WebSettings.LOAD_DEFAULT);
    webView.loadUrl("http://something.kr"); // 보여주고자 하는 주소

    //set.setCacheMode(WebSettings.LOAD_NO_CACHE);
    set.setSupportZoom(false);
    Log.i("DEBUG", set.getUserAgentString());

    webView.setWebViewClient(new WebClient());



    webView.setWebChromeClient(new WebChromeClient()
    {
        public void onProgressChanged(WebView view, int progress) {
            if (progress<100)
            {
                mPBar.setVisibility(ProgressBar.VISIBLE);
            }
            else if (progress==100)
            {
                mPBar.setVisibility(ProgressBar.GONE);
            }
            mPBar.setProgress(progress);
        }




    });}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
    if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){
        if(webView.canGoBack()){
            webView.goBack();
        }else{
            webView.clearCache(false);
            finish();
        }
        return true;
    }
    return super.onKeyDown(keyCode, event);

}

private class WebClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        if (url.startsWith("sms:")) {
            Intent i = new Intent(Intent.ACTION_SENDTO, Uri.parse(url));
            startActivity(i);
            return true;
        }

        if (url.startsWith("kakaolink:")) {
            Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(i);
            return true;
        }


        if(url.startsWith("tel")){
            Intent i = new Intent(Intent.ACTION_DIAL);
            i.setData(android.net.Uri.parse(url));
            startActivity(i);

        } else {
            view.loadUrl(url);

        }



        return true;




    }}
}

【问题讨论】:

  • 您是从资产还是从互联网加载页面?您的 .loadUrl() 建议使用后者。但通常,当显示资产文件夹中的文件并忘记file:///android_asset/ 部分时,WebView 会出现内容加载问题。所以如果是前一个,你可能会检查这个。
  • @PhilLab 感谢您的评论。但它从互联网(一个网站)加载页面..

标签: android android-webview


【解决方案1】:

来自 Android 文档:

Android 5.0 更改了您应用的默认行为。如果你的应用 针对 API 级别 21 或更高级别:系统阻止混合内容和 默认情况下第三方cookie... - https://developer.android.com/about/versions/android-5.0-changes.html

所以试试这个:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
    webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-28
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    相关资源
    最近更新 更多