首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从android工作室的图片库中选择多幅图像?

如何从android工作室的图片库中选择多幅图像?
EN

Stack Overflow用户
提问于 2022-11-29 16:30:23
回答 1查看 39关注 0票数 -1

这是我的密码:-

代码语言:javascript
运行
复制
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), 1);

我尝试使用一组库,但无法添加限制,使用户最多选择10个图像。

EN

回答 1

Stack Overflow用户

发布于 2022-11-29 17:19:56

好的,你需要理解一些事情。首先,如果您想限制用户可以从意图中选择的项的数量,请不要像您使用的那样使用默认方法。相反,创建一个活动,然后自定义它。第二,如果您想使用默认系统,允许用户根据用户的意愿进行选择,但只从ActivityResultLauncher.中获取您想要的。

代码语言:javascript
运行
复制
     Intent intent = new Intent();
        intent.setType("*/*");
        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
        intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        someActivityResultLauncher.launch(intent);

在onClick方法中使用上面的代码

代码语言:javascript
运行
复制
      ArrayList<Uri> files;
    someActivityResultLauncher = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            result -> {
                if (result.getResultCode() == Activity.RESULT_OK) {
                    if (null != result.getData()) {
                        files = new ArrayList<>();
                        if (null != result.getData().getClipData()) {
                            int count = result.getData().getClipData().getItemCount();
                            if (count >= 10) {
                                showSweetAlertError(this, "Error", "Maximum 10 photo.");
                            }
                            for (int i = 0; i < Math.min(count, 10); i++) {
                                Uri uri = result.getData().getClipData().getItemAt(i).getUri();
                                files.add(uri);
                            }
                        } else {
                            Uri uri = result.getData().getData();
                            files.add(uri);
                        }
                    }
                }
            });

创建全局ActivityResultLauncher<Intent> someActivityResultLauncher,然后在onCreate中编写上述代码。这应该能行。

注意:,如果用户选择一张照片,那么result.getData().getData()代码将被执行。如果用户选择多张照片,那么result.getData().getClipData()代码将被执行。所以if语句很重要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74617242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档