2015-05-24 137 views
0

我使用WebView制作简单的应用程序。但是一些图片没有加载。Android Webview图像未加载

正确的(在我的电脑):

enter image description here

错误(在模拟器):

enter image description here

正确:

enter image description here

错误:没有BA nner

enter image description here

所以我调试使用Chrome调试,发现我的代码被改变。

enter image description here

我不加样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; 




    }} 
} 
+0

你加载您资产或互联网上的页面?你的.loadUrl()提示后者。但是,在显示资产文件夹中的文件并忘记'file:/// android_asset /'部分时,通常会出现WebView的内容加载问题。所以如果是前者,你可以检查一下。 – PhilLab

+0

@PhilLab感谢您的评论。但它从互联网(一个网站)加载页面.. – ryush00

回答

4

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