Search code examples
androidimageandroid-10.0android-11

Android 11 Multiple Images with limit


Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.setType("image/*");
startActivityForResult(intent, Image_REQUEST_CODE);

I use this to select multiple images but not getting any limit option.


Solution

  • ClipData clipData = data.getClipData();
    if (clipData != null) {
        for (int i = 0; i < clipData.getItemCount(); i++) {
            ClipData.Item item = clipData.getItemAt(i);
            String path = getRealPathFromURI(item.getUri());
            if (path != null) {
                File imageFile = new File(path);
                imageList.add(new File(imageFile.toString()));
            } else {
                Toast.makeText(requireActivity(), "Invalid Path", Toast.LENGTH_SHORT).show();
                break;
            }
        }
    }
    else {
        Uri uri = data.getData();
        if (path != null) {
            File imageFile = new File(uri);
            imageList.add(imageFile);
        } else {
            Toast.makeText(requireActivity(), "Invalid Path", Toast.LENGTH_SHORT).show();
        }
    }
    //if Images limit is 5
    if (imageList.size() > 5) {
        Toast.makeText(requireActivity(), "Max 5 photos!", Toast.LENGTH_SHORT).show();
    
        for (int i = imageList.size() - 1; i >= 5; i--) {
            imageList.remove(i);
        }
        
    }
    

    I used this onActivityResult() method. it deletes extra photos