在Android上使用意图从照片库中选择多个图片

30

我尝试从相册选择多张图片,但是我只发现了选择单个图片的方法。

@请查看此处 https://dev59.com/7W445IYBdhLWcg3wuslT#15029515

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, 1);
有没有一种方法可以选择多张图片?

请查看此答案:https://dev59.com/G2ox5IYBdhLWcg3wLhYA - Abhi
你可以考虑使用我的项目:https://dev59.com/G2ox5IYBdhLWcg3wLhYA#12806036 - David Erosa
4个回答

7

6

首先,您需要在photoPickerIntent中使用putExtra函数

photoPickerIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE);

然后在您的活动结果中,您应该像这样从Intent中获取ClipData:
ClipData clipData = data.getClipData();
//Where data is param intent of onActivityForResult

遍历此clipData以获取特定选取图像的URI。

for (int i = 0; i < clipData.getItemCount(); i++){
    Uri uri = clipData.getItemAt(i).getUri();
}

我希望你能帮到您。


2
EXTRA_ALLOW_MULTIPLE 在 API 级别 18 中添加 - mbelsky

1

为什么不尝试使用 ACTION_SEND_MULTIPLE 呢?您将收到一组 URI。

就像这样:

    if (Intent.ACTION_SEND_MULTIPLE.equals(action))
        && Intent.hasExtra(Intent.EXTRA_STREAM)) {
        ArrayList<Parcelable> list =
    intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
        for (Parcelable parcel : list) {
           Uri uri = (Uri) parcel;
           /// do things here.
       }
    } 

在 Google 群组的帖子中看到了这个代码块。试试看吧。谢谢。

1
@kalpesh 好的,就像你使用 Intent.ACTION_SEND_MULTIPLE 启动你的活动一样,应该重写你的 **onActivityResult()**,在其中编写上述 _代码_。我还没有尝试过这段代码,因为我正在忙其他事情。上面的代码只是验证了如果操作是你所启动的,并且它有额外的数据,那么将结果收集到一个数组列表中。更多细节请参见此处。希望这可以帮助你。 :) - VenoM
我的意思是willtate的回答已经足够了。 - VenoM
首先感谢您的回复。但很抱歉,我按照您所说的尝试了您的代码,但这个Intent是用来从我的设备发送活动的。我是Android开发新手,所以可能是我的错误。目前我正在遵循willtake的答案。 - Kalpesh
1
抱歉,我的错误。发送操作不允许您进行选择。请忘记这个问题。 - VenoM
没问题...我认为likeaboss的回答也非常有用...我认为在Android中,当我们将其用作自定义时,所有事情都会变得更好...你怎么看? - Kalpesh
这是从图库ACTION_SEND_MULTIPLE意图接收多个文件所需的代码,它对我很有帮助。 - accordionfolder

1
我认为,你应该实现自定义图库以进行多图选择操作。
详见此处

但它打开了所有的图片,如何按文件夹打开? - Aditya Vyas-Lakhan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接