gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 00:19:53 24 4
gpt4 key购买 nike

我正在使用 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()));

关于android - onActivityResult 中返回的两个图像路径合并为一个导致 java.io.FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46511387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com