2015-07-07 7 views
7

Ich nehme eine Datei aus dem Pfad aus der Bildergalerie und versuchen, es eine Bildansicht wie folgt zu laden. Der Dateipfad lautet: /storage/sdcard0/DCIM/Camera/1436267579864.jpg. Ich habe auch versucht, Uri zu passieren, ich habe auch gelesen, Privilegien auf SD-Karte.Picasso-Bibliothek lädt keine Bilder von der SD-Karte auf Android

Es endet in onError() Methode. Eine ähnliche Methode funktioniert jedoch auch für Web-URLs. Wie kann ich das beheben?

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

In welcher Android-Version laufen Sie? Welche Elemente haben Sie in Ihrem Manifest? – CommonsWare

+0

Danke. Ich habe oben mein Manifest hinzugefügt. Telefon hat die neueste Version (4.x) – pats

+0

haben Sie versucht "file: ///storage/sdcard0/DCIM/Camera/1436267579864.jpg" – ligi

Antwort

3

Obwohl es zu spät ist, aber ich in gleiches Problem stecken, so löste ich in der folgenden Weise. Einfach "file: //" am Anfang des Pfades verwenden und anhängen. Werfen Sie einen Blick auf diese:

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"); 

         } 
        }); 

Dies löst mein Problem. Ich antworte nur so, dass, wenn jemand in dasselbe Problem hineinfällt und zur Lösung kommt, er dadurch sein Problem lösen kann.