强制正斜杠为 // 而不是自动合并到 / 字符串

Force forward slash to // instead of automatically combine to / in string

目前,我使用Image Loader Universal库从sdcard中的文件路径加载文件。

我在文件路径的 Uri 中遇到正斜杠问题。

加载文件的正确字符串是:content://media/external/images/media/24415

但是当我输入这些代码时:

imageLoader.displayImage(
                Uri.fromFile(new java.io.File(FILE_PATH)).toString(),
                // .replace("%3A", "/" + java.io.File.separator),
                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) {
                    }
                });
    }

它自动将 2 个正斜杠 // 组合成 1 个正斜杠 /(这意味着 content:/media/external/images/media/24415),因此 Uri 不正确,库可以读取文件,FileNotFoundException 发生了。

不是我想要的,我想要的还是保持//,而不是合并到/(意思是content://media/external/images/media/24415

认识的人,

请帮助我,谢谢。

我遇到的问题是combine from // to / in string。所以现在有办法避免像 :

1 - 按以下代码拆分字符串:

// Should load file from sd card by parsing Uri
    String FILE_PATH = mAlAlbumItem.get(pos).getFilePath();

    // content://media/external/images/media/24415

    String[] SPLIT = FILE_PATH.split("//");

    if (FILE_PATH != null) {
        // Display image

        /**
         * Should use separate string to void wrap these words "//" to "/"
         */
        try {
            Enterprise.imageLoader.displayImage(
                    SPLIT[0] + "//" + SPLIT[1],
                    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) {
                        }
                    });
        } catch (IllegalStateException e) {
            e.printStackTrace();
        }
    }

2 - 使用 Scheme.FILE.wrap(FILE_PATH)Scheme.FILE.wrap(new File(FILE_PATH).getAbsolutePath()) 代替 Uri.fromFile(new File(FILE_PATH))

解析 Uri