2015-05-24 2 views
0

Я делаю простое приложение с WebView. Но некоторые изображения не загружались.Android Webview Изображение не загружено

Correct (в моем компьютере):

enter image description here

Неправильный (в эмуляторе):

enter image description here

Correct:

enter image description here

неправильно: нет ба nner

enter image description here

Так что я отлажена с Chrome отладки и обнаружил, что мой код был изменен.

enter image description here

я не добавляю, как noscript или style="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() предлагает последний. Но часто проблемы с загрузкой контента с помощью WebView возникают при отображении файлов из папки активов и забыли часть 'file: /// android_asset /'. Так что если это первый, вы можете проверить это. – PhilLab

+0

@PhilLab Спасибо за комментарий. Но он загружает страницу из Интернета (сайт) .. – ryush00

ответ

4

С Android документы:

Android 5.0 изменяет поведение по умолчанию для вашего приложения. Если ваши цели приложение уровень API 21 или выше: системные блоки смешанное содержание и печенье третьих сторон по умолчанию ... - 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); 
Смежные вопросы