基本上我想要实现的是在Android中打开Gallery
并允许用户选择多张图片
。这个问题已经被经常提出,但我对答案不满意。主要是因为我在我的IDE文档中找到了一些有趣的东西(稍后我会回顾它),因此我不想使用自定义适配器,而只想使用原始适配器。
现在我用于选择一张图片的代码是:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), 1);
现在,在 Stack Overflow 和其他网站上的人会告诉你有两个选择:
1)不使用 ACTION_GET_CONTENT
,而是改用 ACTION_SEND_MULTIPLE
。这个方法不起作用。根据文档,它是用来发送
文件而不是检索
文件,这正是它所做的。当我使用 ACTION_SEND_MULTIPLE 时,我的设备弹出一个窗口,让我选择要将数据发送给哪个应用程序。这不是我想要的,所以我想知道人们是如何使用这种方法实现此目标的... 我错过了什么吗?
2)实现一个自定义画廊
。现在这是我考虑的最后一个选项,因为在我看来,这不是我正在寻找的,因为我必须自己设计样式,而且为什么你不能在原始画廊中选择多个图像呢?
一定有一个选项可以解决这个问题... 现在我发现的有趣的事情是:
我在对ACTION_GET_CONTENT
的描述中找到了这个。
如果调用者可以处理多个返回项目(用户执行多个选择),那么它可以指定 EXTRA_ALLOW_MULTIPLE 来表示这一点。
这非常有趣。这里他们是在引用用户可以选择多个项目的情况吗?
后来他们在文档中说:
您可以使用 EXTRA_ALLOW_MULTIPLE 允许用户选择多个项目。
所以这很明显吧?这就是我需要的。但我的跟随问题是:我在哪里可以放置这个EXTRA_ALLOW_MULTIPLE
?遗憾的是,我找不到这个东西在Android开发者指南中的任何位置,也没有在 INTENT 类中定义为常量。
有人能帮我解决这个EXTRA_ALLOW_MULTIPLE
吗?
EXTRA_ALLOW_MULTIPLE
可以让您选择多个项目。在onActivityResult
中调用返回意图的getClipData()
以获取URI。 唯一的问题是,画廊小部件不允许多选。在这种情况下,单击任何图像都将完成选择器,并且您可以通过在返回的意图上调用getData
来获取URI(单个项目)。 - Tanweer Alam