Я новичок в 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 мне вообще не удавалось выбирать изображения, и здесь первый способ сработал. Итак, мой вопрос: как получить несколько изображений в этом сценарии, используя второй способ, если это возможно, и будет ли эта проблема на каком-то другом устройстве?
да библиотека намного лучше
Как вы упомянули, для 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, мой код работает нормально, я говорю о намерении. Extra_allow_multiple - это запрос, поэтому некоторые устройства будут отказывать в множественном выборе изображений, поэтому я выбрал библиотеку. У меня больше нет проблем.
извините, мое плохое, на самом деле я думал, что вы столкнулись с проблемой.
Я попробовал приведенный ниже код, и он работает. Вместо того, чтобы проверять "модель" устройства, проверьте производителя. Это перенаправит приложение, чтобы открыть средство выбора документов (вместо приложения галереи по умолчанию), оттуда вы можете перейти к «Фото» из меню.
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);
}
Лучше использовать библиотеку, я бы посоветовал Матисс