2016-10-07 2 views
2

Я пытаюсь загрузить и кешировать изображение с помощью picasso с веб-сервера. Я нашел решение прямо здесь: https://stackoverflow.com/a/30686992/6884064Picasso с OKHttp не отображает изображение: ошибка журнала

Picasso.Builder builder = new Picasso.Builder(this); 
      builder.downloader(new OkHttpDownloader(this,Integer.MAX_VALUE)); 
      Picasso built = builder.build(); 
      built.setIndicatorsEnabled(true); 
      built.setLoggingEnabled(true); 
      Picasso.setSingletonInstance(built); 

      Picasso.with(this) 
        .load("http://i.imgur.com/Q85lste.jpg") 
        .networkPolicy(NetworkPolicy.OFFLINE) 
        .into(coverImg); 

build.gradle:

compile 'com.squareup.picasso:picasso:2.5.2' 
compile 'com.squareup.okhttp:okhttp:2.4.0' 
compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0' 

Когда я запускаю это мой заполнителем изображение исчезает, но новое изображение не загружается в

Прогон. log дает мне это:

D/Picasso: Main  created  [R0] Request{http://i.imgur.com/Q85lste.jpg} 
D/Picasso: Dispatcher enqueued  [R0]+6ms 
D/Picasso: Hunter  executing [R0]+7ms 
W/System.err: remove failed: ENOENT (No such file or directory) : /data/user/0/com.test.example1/cache/picasso-cache/journal.tmp 
D/Picasso: Dispatcher batched  [R0]+45ms for error 
D/Picasso: Dispatcher delivered [R0]+246ms 
D/Picasso: Main  errored  [R0]+246ms 

Кто-нибудь знает, что здесь происходит? Благодаря!

EDIT:

Он работает с этим кодом:

OkHttpClient okHttpClient = new OkHttpClient(); 
      okHttpClient.networkInterceptors().add(new Interceptor() { 
       @Override 
       public Response intercept(Interceptor.Chain chain) throws IOException { 
        Response originalResponse = chain.proceed(chain.request()); 
        return originalResponse.newBuilder().header("Cache-Control", "max-age=" + (60 * 60 * 24 * 365)).build(); 
       } 
      }); 

      okHttpClient.setCache(new Cache(getCacheDir(), Integer.MAX_VALUE)); 
      OkHttpDownloader okHttpDownloader = new OkHttpDownloader(okHttpClient); 
      Picasso picasso = new Picasso.Builder(this).downloader(okHttpDownloader).build(); 
      picasso.load("http://i.imgur.com/test.jpg").into(coverImg); 

ответ

1

Если попытаться в Android Studio эмуляторе, чистый кэш и данные приложения и удаления, а затем установить его снова. А также не забывать необходимые разрешения:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

возможно работал. удачи.

+0

У меня был только первый набор разрешений. Настроил его сейчас и попробовал оба (мой телефон и эмулятор. На моем телефоне ничего не изменилось -> по-прежнему получалась такая же ошибка. На моем эмуляторе я получаю другую ошибку: D/NetworkSecurityConfig: нет настроек сетевой безопасности, используя платформа по умолчанию –

+0

Вы правы. Я копирую эти коды из своего приложения и забываю проверить их!: d –

+0

Я попытаюсь найти способы устранения неполадок с помощью других способов помочь вам. –

Смежные вопросы