Выбор нескольких изображений при нажатии из галереи

Я новичок в Android, и я написал код для выбора нескольких изображений из галереи, и для этого я написал 2 способа сделать это. На onActivityResult я использую каждый образ от data.getClipdata до recieve.

Это первый способ выбора нескольких изображений.

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"), RESULT_LOAD_IMAGE);

Это второй способ выбора нескольких изображений.

Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent,RESULT_LOAD_IMAGE);

Я выбрал второй способ выбора нескольких изображений, потому что при его реализации это выглядело лучше для моего приложения, и я мог выбрать несколько изображений одним щелчком и перестал использовать первый способ, так как мне нужно выбрать несколько изображений с помощью длительного нажатия. Вещи шли нормально, как на эмуляторе студии Android, так и на USB-отладке устройства Nokia. Но на одном устройстве Samsung мне вообще не удавалось выбирать изображения, и здесь первый способ сработал. Итак, мой вопрос: как получить несколько изображений в этом сценарии, используя второй способ, если это возможно, и будет ли эта проблема на каком-то другом устройстве?

Лучше использовать библиотеку, я бы посоветовал Матисс

Manohar 10.08.2018 08:28

да библиотека намного лучше

Arsalan 31.10.2018 06:56
3
2
1 017
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Как вы упомянули, для Samsung вариант 1 и для другого устройства работает вариант 2. так что просто поставьте условие и проверьте, какое устройство используется в это время

String deviceName = "Samsung";
if (deviceName.e(android.os.Build.MODEL)){
    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"), RESULT_LOAD_IMAGE);
}else{
    Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
    startActivityForResult(intent, RESULT_LOAD_IMAGE);
}

@Danial any Feedback?

Arbaz.in 16.08.2018 11:06

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

Arsalan 31.10.2018 06:58

Arbaz, мой код работает нормально, я говорю о намерении. Extra_allow_multiple - это запрос, поэтому некоторые устройства будут отказывать в множественном выборе изображений, поэтому я выбрал библиотеку. У меня больше нет проблем.

Arsalan 31.10.2018 08:12

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

Arbaz.in 31.10.2018 08:14

Я попробовал приведенный ниже код, и он работает. Вместо того, чтобы проверять "модель" устройства, проверьте производителя. Это перенаправит приложение, чтобы открыть средство выбора документов (вместо приложения галереи по умолчанию), оттуда вы можете перейти к «Фото» из меню.

public void captureImageFromGallery() {
    Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

    intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);

    String deviceName = "Samsung";
    if (deviceName.equalsIgnoreCase(Build.MANUFACTURER)) {
        intent.setDataAndType(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
    }
    startActivityForResult(intent, REQ_CODE_GALLERY);
}

Другие вопросы по теме