Glide无法从内部存储

时间:2017-07-21 18:06:02

标签: android android-glide

我有一个Activity,我在其中下载了一个图像压缩文件,然后在getFilesDir()中解压缩。路径是这样的:

  

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

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

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

imageloc路径与保存位置相同,从路径创建文件时,它显示它将存在。

我尝试在路径前使用file://,但这也不起作用。 <{1}} en WRITE_EXTERNAL权限被提出并被授予。

5 个答案:

答案 0 :(得分:10)

这适用于我,制作文件实例并将要加载的文件传递给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 :(得分:1)

您是否尝试使用此

使用加载滑音侦听器

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

并检查异常?

2.再次调试。

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

<强> 3.Path

路径中真的是/ files / files /吗?

4.Extension 你能从文件路径中删除.png并加载并检查吗?

<强> 5.Tutorial

这里有一个很棒的教程https://futurestud.io/tutorials/glide-getting-started

答案 2 :(得分:0)

试试这个

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

答案 3 :(得分:0)

首先捕获图像路径,要么是从相机捕获图像,要么是从图库中选取图像(我假设您已经具有读写权限)。然后试试这个

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

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

答案 4 :(得分:0)

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

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