Итак, в основном то, что я пытаюсь достичь, - это открыть Gallery
в Android и позволить пользователю выбирать multiple images
. Сейчас этот вопрос задают часто но я не удовлетворен ответами. В основном потому, что я нашел кое-что интересное в документации в моей среде IDE (я вернусь к этому позже), и поэтому я не хочу использовать специальный адаптер, а только ванильный.
Теперь мой код для выбора одного изображения:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), 1);
Теперь люди на SO и других сайтах скажут вам, что у вас есть 2 варианта:
1) Не использовать, ACTION_GET_CONTENT
а ACTION_SEND_MULTIPLE
взамен.
Это не работает. Это соответствует документам для sending
файлов, а не, retrieving
и это именно то, что он делает. При использовании ACTION_SEND_MULTIPLE на моем устройстве открылось окно, в котором я должен выбрать приложение для отправки моих данных. Это не то, что я хочу, поэтому мне интересно, как люди добились этого с помощью этого решения .. Я что-то упускаю?
2) Реализуйте custom Gallery
. Теперь это мой последний вариант, который я рассмотрю, потому что imho это не то, что я ищу, потому что я должен сам его стилизовать И почему, черт возьми, вы просто не можете выбрать несколько изображений в ванильной галерее?
Должна быть опция для этого ... Теперь я обнаружил интересную вещь:
я нашел это в описании документации ACTION_GET_CONTENT
.
Если вызывающий может обрабатывать несколько возвращаемых элементов (пользователь выполняет множественный выбор), он может указать EXTRA_ALLOW_MULTIPLE, чтобы указать это.
Это довольно интересно. Здесь они ссылаются на вариант использования, когда пользователь может выбрать несколько элементов?
Позже в документации пишут:
Вы можете использовать EXTRA_ALLOW_MULTIPLE, чтобы позволить пользователю выбирать несколько элементов.
Так что это довольно очевидно, правда? Это то, что мне нужно. Но у меня следующий вопрос: где я могу это поставить EXTRA_ALLOW_MULTIPLE
? Печально то, что я не могу найти это нигде в руководстве developers.android, а также это не определено как константа в классе INTENT.
Кто-нибудь может мне с этим помочь EXTRA_ALLOW_MULTIPLE
?
EXTRA_ALLOW_MULTIPLE
позволяет выбрать несколько элементов. Получите URI, вызвав getClipData()
возвращенное намерение в onActivityResult
. Единственная проблема в том, что виджет галереи не позволяет множественный выбор. В этом случае щелчок по любому изображению завершит выбор, и вы сможете получить URI (одного элемента), вызвав getData
возвращенное намерение