2015-07-07 18 views
7

Biorę plik ze ścieżki z galerii obrazów i próbuję załadować go w następujący sposób. Ścieżka pliku: /storage/sdcard0/DCIM/Camera/1436267579864.jpg. Próbowałem także przekazać Uri I również uprawnienia do odczytu na kartę SD.Biblioteka Picassa nie ładuje obrazów z karty SD na Androida

Kończy się metodą onError(). Jednak podobna metoda działa dobrze w przypadku adresów internetowych. Jak mogę to rozwiązać?

private void getImage(File file) { 

     if(file.exists()) { 

      Picasso.with(activity) 
        .load(file) 
        .error(R.drawable.noimage) 
        .into(imgPreview, new Callback() { 
         @Override 
         public void onSuccess() { 
          if (progressBar != null && imgPreview != null) { 

           imgPreview.setVisibility(View.VISIBLE); 
           imgPreview.setTag("loaded"); 
           progressBar.setVisibility(View.GONE); 

          } 
         } 

         @Override 
         public void onError() { 
          if (progressBar != null && imgPreview != null) { 
           imgPreview.setVisibility(View.VISIBLE); 
           progressBar.setVisibility(View.GONE); 
          } 
         } 

        }); 
    } 


<uses-sdk 
    android:minSdkVersion="11" 
    android:targetSdkVersion="21" /> 

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

Jakiej wersji Androida używasz? Jakie elementy "" masz w swoim manifeście? – CommonsWare

+0

Dzięki. Dodałem mój Manifest powyżej. Telefon ma najnowszą wersję (4.x) – pats

+0

wypróbowałeś "file: ///storage/sdcard0/DCIM/Camera/1436267579864.jpg" – ligi

Odpowiedz

3

Choć jest zbyt późno, ale tkwi w tym samym problemem, więc rozwiązany w następujący sposób. Po prostu używanie i dołączanie "file: //" przy rozpoczynaniu ścieżki. spójrz na to:

Picasso.with(context) // 
        .load("file://" +myFilePath) // 
        .error(R.mipmap.error) 
        .placeholder(R.mipmap.ic_launcher) 
        .fit() 
        .tag(MyActivity.this) // 
        .into(imageView, new ImageLoadedCallback(progressBar) { 
         @Override 
         public void onSuccess() { 
          progressBar.setVisibility(View.GONE); 
         } 

         @Override 
         public void onError() { 
          Log.d("Picasso Error", "Error"); 

         } 
        }); 

To rozwiązuje mój problem. Odpowiadając tak, że jeśli ktoś wpadnie w ten sam problem i przyszedł tu po rozwiązanie, może rozwiązać ten problem.

Powiązane problemy