2015-05-24 177 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);