Как ограничить выбор нескольких изображений из галереи? - PullRequest
0 голосов
/ 11 января 2019

Я реализовал добавление множественного выбора изображений из галереи в моем проекте. Однако я хочу ограничить пользователя, чтобы он / она мог выбрать только 3 изображения из галереи.

Я реализовал выбор нескольких изображений из галереи так:

 `Intent intent = new Intent();
        intent.setType("image/*");
        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Select Picture"), 1);`

Как мне этого добиться?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 11 января 2019

поместите это в свой build.gradle (приложение)

 compile 'com.github.esafirm.android-image-picker:imagepicker:1.5.0'
compile 'com.github.esafirm.android-image-picker:rximagepicker:1.5.0' 

и это в вашей деятельности

private void pickImage() {
    ImagePicker.create(UploadPhotosActivity.this)
            .showCamera(false)
            .limit(3)
            .imageTitle(getString(R.string.select_image))
            .folderTitle(getString(R.string.folder))
            .theme(R.style.ImagePickerTheme)
            .start(RC_CODE_PICKER);
} 

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
     if (requestCode == RC_CODE_PICKER) {
            Log.d("===uploadPhoto", "gallery : " + data);
            imagesList = (ArrayList<Image>) ImagePicker.getImages(data);
            Intent intent = new Intent(UploadPhotosActivity.this, ImageCropperActivity.class);
            intent.putExtra(ImageCropperActivity.EXTRA_VIEW_PORT_RATIO, imagesList);
            startActivity(intent);
        }
    } else {
        Intent returnIntent = new Intent();
        setResult(Activity.RESULT_CANCELED, returnIntent);
        finish();
    }
}
0 голосов
/ 08 марта 2019

Вы можете получить счет ClipData при выборе нескольких изображений из галереи и, если этот счет больше 3, вы можете уведомить об этом пользователя.

Вы можете сделать что-то подобное после выбора изображений из галереи:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(resultCode == RESULT_OK || resultCode != RESULT_CANCELED){
              ClipData clipData = data.getClipData();
              if(clipData.getItemCount() > 3){
                   //notify user here...
              }
        }
}
0 голосов
/ 11 января 2019

Это невозможно. https://developer.android.com/reference/android/content/Intent.html#EXTRA_ALLOW_MULTIPLE

Вам нужно будет вручную проверить возвращенные данные, чтобы увидеть, если их больше 10, и если да, показать тост

...