我如何可以选择多个图像从画廊在android studio

zf9nrax1  于 2022-11-30  发布在  Android
关注(0)|答案(1)|浏览(171)

这是我的密码:-

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个图像

cotxawn7

cotxawn71#

好的,你需要了解一些事情。首先,如果你想限制用户可以从Intent中选择的项目数量,不要像你那样使用默认方法。而是创建一个Activity,然后自定义它。其次,如果你想使用默认系统,让用户选择用户想要的数量,但只从ActivityResultLauncher中选择你想要的数量。

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方法和

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语句非常重要。

相关问题