这是我的密码:-
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个图像。
发布于 2022-11-29 17:19:56
好的,你需要理解一些事情。首先,如果您想限制用户可以从意图中选择的项的数量,请不要像您使用的那样使用默认方法。相反,创建一个活动,然后自定义它。第二,如果您想使用默认系统,允许用户根据用户的意愿进行选择,但只从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语句很重要。
https://stackoverflow.com/questions/74617242
复制相似问题