onActivityResult 中返回的两个图像路径正在合并为一个,导致 java.io.FileNotFoundException

Two Image paths returned in onActivityResult are getting merged into one resulting in java.io.FileNotFoundException

我正在使用 android-image-picker 库从图库中挑选照片。

代码如下:

tapToUploadLabel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            ImagePicker.create(MainActivity.this)
                    .returnAfterFirst(false) // set whether pick or camera action should return immediate result or not. For pick image only work on single mode
                    .imageTitle("Tap to select") // image selection title
                    .single() // single mode
                    .multi() // multi mode (default mode)
                    .limit(3) // max images can be selected (99 by default)
                    .showCamera(true) // show camera or not (true by default)
                    .imageDirectory("Camera") // directory name for captured image  ("Camera" folder by default)
                    .enableLog(false) // disabling log
                    .start(REQUEST_CODE_PICKER); // start image picker activity with request code
        }
    });

这里是onActivtyResult()

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_CODE_PICKER && resultCode == RESULT_OK && data != null) {
            ArrayList<Image> images = (ArrayList<Image>) ImagePicker.getImages(data);
            printImages(images);
            mViewPager.setAdapter(mCustomPagerAdapter);
        }
    }

这是printImages()

private void printImages(List<Image> images) {
        if (images == null) return;

        if (imageArray.size() >= 1) {
            imageArray.clear();
        }

        StringBuilder stringBuffer = new StringBuilder();
        for (int i = 0, l = images.size(); i < l; i++) {
            stringBuffer.append(images.get(i).getPath()).append("\n");
            imageArray.add(Uri.parse(stringBuffer.toString().trim()));
        }
}

现在,我正在使用 imageArrayImageView 中设置图像,如下所示:

ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView);
Log.d("imageArrayContains", imageArray.get(position).toString());
imageView.setImageURI(imageArray.get(position));

问题是,当我只选择 1 张图片时,它在 ImageView 中设置时没有任何错误,但是当我选择 2 张或更多图片时,我收到此错误:

E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/Pictures/Kwote/1506843168441.jpg
/storage/emulated/0/Pictures/Camera/IMG_20171001_035028145702152.jpg: open failed: ENOENT (No such file or directory)

因为 2 个文件路径正在合并为一个,如下所示:/storage/emulated/0/Pictures/Kwote/1506843168441.jpg /storage/emulated/0/Pictures/Camera/IMG_20171001_035028145702152.jpg

我不知道如何阻止它合并,以便我可以将所有选定的图像加载到我的 ImageView 中。

请帮忙解决这个问题。

您在同一个 StringBuilder 中附加了两个路径。

将它放在 for 循环中。

我相信您根本不需要 StringBuilder。只需使用 imageArray.add(Uri.parse (images.get(i).getPath().trim()));