【问题标题】:Glide can't load file from internal storageGlide 无法从内部存储加载文件
【发布时间】:2017-07-21 18:06:01
【问题描述】:

我有一个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://,但这也不起作用。 WRITE_EXTERNAL en READ_EXTERNAL 请求并授予权限。

【问题讨论】:

标签: android android-glide


【解决方案1】:

这对我有用,创建文件实例并将您要加载的文件的 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;
            }

【讨论】:

    【解决方案2】:

    你有没有尝试使用这个来使用滑动的加载监听器

    1.调试:-

    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.路径

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

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

    5.教程

    可以在这里找到一个很棒的深度教程https://futurestud.io/tutorials/glide-getting-started

    【讨论】:

      【解决方案3】:

      首先捕获您的图像路径,您是从相机捕获图像还是从图库中选择它(我假设您已经授予读写权限)。然后试试这个

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

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

      【讨论】:

        【解决方案4】:

        试试这个

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

        【讨论】:

        • 我正在获取图像相机和画廊你能告诉我在哪里可以获得完美的路径并将其设置为现在滑行我只看到我的占位符路径 = /storage/emulated/0 /1586779115967.jpg 像这样。
        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 2022-01-21
          • 2021-05-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多