2017-07-21 3 views
9

Ich habe ein Activity, in dem ich eine Zip-Datei der Bilder herunterladen und dann im getFilesDir() entpacken. Pfad so ist:Glide können nicht Datei aus dem internen Speicher laden

/data/user/0/packagename/files/files/example.png

Wenn ich versuche, diese Bilder jedoch zu laden, sie zeigen nicht. ich diesen Code mit dem Pfad zu erhalten und um das Bild zu laden:

String loc = getFilesDir().getPath() + "/" + Config.IMAGES_LOCATION +"/"; 
    String imageloc = loc + model.getThumbnail(); 
    Glide.with(ActivityImageGallery.this).load(imageloc).into(image); 

Der imageloc Weg ist die gleiche wie der Ort speichern und wenn eine Datei aus dem Weg zu schaffen, zeigt es, dass es existieren würde.

Ich versuchte file:// vor dem Pfad, aber das funktioniert auch nicht. WRITE_EXTERNAL en READ_EXTERNAL Berechtigungen werden gebeten, und erteilt.

+0

Sie Tests sind auf Android N? – Debanjan

+0

Nein, auf meinem Oneplus 2 unter Android 6.0 – Stefan

+0

haben Sie versucht, mit dieser https://stackoverflow.com/a/42067675/5492047 Loader von glide zu laden und die Ausnahme zu überprüfen? und tolles Tutorial finden Sie hier in der Tiefe https://futurestud.io/tutorials/glide-getting-started. –

Antwort

1

Haben Sie versucht, mit Laden Hörer gleiten diese 1.Debug

mit: -

https://stackoverflow.com/a/42067675/5492047

Glide.with(getActivity()) 
.load(args.getString(IMAGE_TO_SHOW)) 
.listener(new RequestListener<String, GlideDrawable>() { 
    @Override 
    public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
     return false; 
    } 

    @Override 
    public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 

     return false; 
    } 
}) 
.into(imageFrame); 

und überprüfen Sie die Ausnahme?

2.Debug wieder.

Können Sie eine beliebige Datei-Explorer App verwenden und auf den genauen Ort gehen, wo die Datei geladen wird, und öffnen Sie dann Datei ?.

3.Path

Ist es wirklich/files/files/in den Weg?

4.Erweiterung Können Sie .png aus dem Dateipfad entfernen und laden und überprüfen?

5.Tutorial

An awesome Tutorial können hier werden Tiefe https://futurestud.io/tutorials/glide-getting-started gefunden.

0

versuchen, diese

File c = new File(Environment.getExternalStorageDirectory() + "/data/user/0/packagename/files/files/example.png"); 
Glide.with(MainActivity.this).load(c).error(R.drawable.empty_pic).placeholder(R.drawable.empty_pic).into(image2); 

oder versuchen, diese

Glide.with(getActivity()).load(new File(" your path").toString()) 
     .listener(new RequestListener<String, GlideDrawable>() { 
      @Override 
      public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
       Log.e("xmx1","Error "+e.toString()); 
       return false; 
      } 

      @Override 
      public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
       Log.e("xmx1","no Error "); 
       return false; 
      } 
     }) 
     .into(ivx); 
8

Dies funktioniert für mich, Datei Instanz machen und Datei uri übergeben, die Sie in ImageView

Glide.with(context) 
    .load(new File(fileUri.getPath())) // Uri of the picture 
    .into(profileAvatar); 

Make laden möchten Sicher haben Sie

012 hinzugefügt
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

Sie können auch RequestListener verwenden, um die Fehler im Falle des Scheiterns zu verfolgen

new RequestListener<String, GlideDrawable>() { 
      @Override 
      public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
       return false; 
      } 

      @Override 
      public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
       return false; 
      } 

ich dies wünschen Ihnen helfen.

0

Erfassen Sie zuerst Ihren Bildpfad, entweder Sie nehmen das Bild von der Kamera auf oder wählen es aus der Galerie aus (ich nehme an, Sie haben bereits Lese- und Schreibrechte erhalten). Versuchen Sie dann diesen

Glide.with(context).load(new File(imagePath)).dontAnimate().error(R.drawable.errorImage).placeholder(R.drawable.placeholderImage).into(imageView); 

.dontAnimate() weil in einigen Fällen verwenden, kann es das Bild sein, nicht oder Show laden, wenn Sie zum ersten Mal laden (oder zusätzliche Zeit in Anspruch nehmen). Hoffe, es wird helfen.

0

Sie würden die Laufzeit-Berechtigungen benötigen interne storage.Second verwenden neueste glide Bibliothek Kompilierung 'com.github.bumptech.glide: glide: 3.7.0' zu verwenden und Format als

Glide.with(context).load(image path).into(Imageview); 
Verwandte Themen