2017-07-02 29 views
0

當我嘗試打開我的本地Web服務器上加載圖像的圖像,即可以顯示沒有任何問題,而不是我試圖加載與Picasso的Android應用程序,我將Internet的權限和程序可以從網絡上獲取數據畢加索能夠從我的本地

本地Web服務器上我的圖片路徑:

localhost/public/channels/7BYtHhP5LP8.png 

和我的網絡IP地址:

192.168.1.4 

這是我的代碼,以LOA d圖片:

Picasso.with(context) 
     .load("192.168.1.4/public/channels/7BYtHhP5LP8.png") 
     .networkPolicy(NetworkPolicy.OFFLINE) 
     .into(holder.imageAvatar, new Callback() { 
      @Override 
      public void onSuccess() { 
       holder.loading_avatar_image.setVisibility(View.GONE); 
       holder.imageAvatar.setVisibility(View.VISIBLE); 
      } 
      @Override 
      public void onError() { 
       Picasso.with(context) 
         .load("192.168.1.4/public/channels/7BYtHhP5LP8.png") 
         .placeholder(R.drawable.cafe_alachiq_place_holder_logo) 
         .error(R.drawable.cafe_alachiq_logo) 
         .into(holder.imageAvatar, new Callback() { 
          @Override 
          public void onSuccess() { 
           holder.loading_avatar_image.setVisibility(View.GONE); 
           holder.imageAvatar.setVisibility(View.VISIBLE); 
          } 
          @Override 
          public void onError() { 
           holder.loading_avatar_image.setVisibility(View.GONE); 
           holder.imageAvatar.setVisibility(View.VISIBLE); 
           holder.imageAvatar.setImageDrawable(context.getResources().getDrawable(R.drawable.cafe_alachiq_logo)); 
          } 
         }); 
      } 
     }); 
在這個畢加索

implamentation最新public void onError()工作對我來說

回答

0

使用URI與方案 「http://192.168.1.4/public/channels/7BYtHhP5LP8.png」。還要檢查圖像是否可見,只需在瀏覽器中輸入URI(從手機)。

您還需要更改網絡策略:

.networkPolicy(NetworkPolicy.OFFLINE) 

因爲離線方式(documentation

OFFLINE 部隊通過磁盤緩存只,跳繩網絡的請求。

+0

我正在使用'.networkPolicy(NetworkPolicy.OFFLINE)'當設備沒有互聯網連接時使用緩存,如果它可能上網,畢加索試圖再次獲得在線而不是盤緩存,它的不正確? –

+0

不,網絡策略「離線」意味着畢加索不會嘗試從網絡下載圖像。它只會檢查它是否被緩存過。我想你只想要默認行爲,所以你根本不需要調用.networkPolicy(..)。 –

+0

好的,請讓我來測試你的解決方案 –

0

我一直是這樣苦苦掙扎了一個多小時。

我做了以下內容:

  1. 檢索使用ifconfig | grep 192本地IP(MAC)。並從inet中獲得了價值。

不過它不工作,因爲我沒有權限

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

添加這在我的AndroidManifest.xml中,它就像一個魅力。

希望這會有所幫助。

0
Picasso.with(context) 
      .load(" 
http://10.0.3.2/public/channels/7BYtHhP5LP8.png") 
      .networkPolicy(NetworkPolicy.OFFLINE) 
      .into(holder.imageAvatar, new Callback() { 
       @Override 
       public void onSuccess() { 
        holder.loading_avatar_image.setVisibility(View.GONE); 
        holder.imageAvatar.setVisibility(View.VISIBLE); 
       } 
       @Override 
       public void onError() { 
        Picasso.with(context) 
          .load("192.168.1.4/public/channels/7BYtHhP5LP8.png") 
          .placeholder(R.drawable.cafe_alachiq_place_holder_logo) 
          .error(R.drawable.cafe_alachiq_logo) 
          .into(holder.imageAvatar, new Callback() { 
           @Override 
           public void onSuccess() { 
            holder.loading_avatar_image.setVisibility(View.GONE); 
            holder.imageAvatar.setVisibility(View.VISIBLE); 
           } 
           @Override 
           public void onError() { 
            holder.loading_avatar_image.setVisibility(View.GONE); 
            holder.imageAvatar.setVisibility(View.VISIBLE); 
            holder.imageAvatar.setImageDrawable(context.getResources().getDrawable(R.drawable.cafe_alachiq_logo)); 
           } 
          }); 
       } 
      }); 

嘗試使用此IP。它可能適合你。