Glide无法从内部存储装载文件

我有一个Activity ,我下载一个zipfile的图像,然后在getFilesDir()解压缩。 path是这样的:

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

当我尝试加载这些图像,但是,他们没有显示。 我正在使用此代码来获取path并加载图像:

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

imagelocpath与保存位置相同,当从path创build文件时,它将显示它将存在。

我尝试使用file://在path前面,但是这也不起作用。 WRITE_EXTERNALREAD_EXTERNAL权限被询问和授予。

Solutions Collecting From Web of "Glide无法从内部存储装载文件"

这适用于我,使文件实例和传递文件的URI,你想加载到ImageView

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

确保你已经添加了

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

您也可以使用RequestListener追踪错误

 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; } 

我希望这能帮到您。

你有没有尝试使用这个加载滑音监听器

1.Debug: –

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

并检查exception?

再次debugging。

你可以使用任何文件资源pipe理器的应用程序,并转到文件加载的确切位置,然后打开文件?

3.Path

它真的/文件/文件/在path中?

4.Extension你可以从文件path中删除.png并加载并检查?

5.Tutorial

一个令人敬畏的教程可以在这里深入https://futurestud.io/tutorials/glide-getting-started

尝试这个

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

或者试试这个

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

首先捕捉你的图像path,无论是从相机捕获图像或从画廊中select(我假设你已经给予读写权限)。 然后试试这个

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

使用.dontAnimate()因为在某些情况下,可能是图像在第一次加载时(或需要额外的时间)没有加载或显示。 希望它会有所帮助。

您需要运行时间权限才能使用内部存储。第二次使用最新的滑动库编译“com.github.bumptech.glide:glide:3.7.0”,格式为

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