【问题标题】:Get correct File uri from file path in sdcard when using in Universal Image Loader在 Universal Image Loader 中使用时从 sdcard 中的文件路径获取正确的文件 uri
【发布时间】:2015-07-05 14:46:30
【问题描述】:

目前,我使用 [Universal Image Loader] 库从 sd 卡加载一些文件。
我想从文件路径中获取以下 URI: file:///mnt/sdcard/image.png

我已经尝试过这种方式来获取文件 URI: Uri uri = Uri.fromFile(mAlFileList.get(i));

但是file URI 已经修改为 file:///mnt/sdcard/%5B40k%5D/20141014_232337.jpg

当我在文件夹名称中使用特殊字符时,是:[40k] - 这是%5B40k%5D 的名称。

我想要的是得到这个文件 URI:file:///mnt/sdcard/[40k]/20141014_232337.jpg
但是我不知道如何得到正确的东西。

请帮帮我。

PS:

  • 也适用于文件夹名称中还包含空格字符的情况,如:My Folder(改成%20,但不是我想要的)
  • 实际上,如果我不使用任何特殊字符,库可以正确加载文件。

从库中接受的 URI:

"http :// site.com/image.png" // from Web
"file:///mnt/sdcard/image.png" // from SD card
"file:///mnt/sdcard/video.mp4" // from SD card (video thumbnail)
"content://media/external/images/media/13" // from content provider
"content://media/external/video/media/13" // from content provider (video thumbnail)
"assets://image.png" // from assets
"drawable://" + R.drawable.img // from drawables (non-9patch images)
  • 代码加载媒体文件:

                imageLoader.displayImage(
                Uri.fromFile(new java.io.File(FILE_PATH)).toString()
                ,
                markableImageView, mDio,
                new SimpleImageLoadingListener() {
                    @Override
                    public void onLoadingStarted(String imageUri, View view) {
                    }
    
                    @Override
                    public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                    }
    
                    @Override
                    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                        if (loadedImage != null & view != null) {
                            ((ImageView) view).setImageBitmap(Bitmap.createScaledBitmap(
                                    loadedImage,
                                    mContext.getResources().getInteger(R.integer.width_file_view),
                                    mContext.getResources().getInteger(R.integer.height_file_view),
                                    false));
                        }
                    }
                }, new ImageLoadingProgressListener() {
                    @Override
                    public void onProgressUpdate(
                            String imageUri, View view, int current, int total) {
                    }
                });
    

【问题讨论】:

  • 签出this。
  • @Exception : 如果使用special character in folder name,这种方式将不起作用。

标签: android image video universal-image-loader


【解决方案1】:

试试这个

Uri.fromFile(new File("/sdcard/yourImageName.jpg"));

【讨论】:

  • @Neah Ahlucalia :如果使用special character in folder name,这种方式将不起作用。
  • 需要另辟蹊径。你的案子也需要我提到的案子的支持。请专业工作。
【解决方案2】:

没有办法得到这个file:///mnt/sdcard/[40k]/20141014_232337.jpg。

所以我应该尝试另一种方法是获取Content Uri,例如content://media/external/images/media/24415,而不是上面示例中的File Uri。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多