Я пытаюсь открыть изображение / картинку во встроенном приложении Галерея из моего приложения.
У меня есть URI картинки (картинка находится на SD-карте).
Есть ли у вас какие-либо предложения?
android
image
android-intent
gallery
Майкл Кесслер
источник
источник
Ответы:
Это полное решение. Я только что обновил этот пример кода информацией, предоставленной в ответе ниже @mad. Также проверьте решение ниже от @Khobaib, объясняющее, как обращаться с изображениями Picasa.
Обновить
Я только что рассмотрел свой первоначальный ответ и создал простой проект Android Studio, который вы можете извлечь из github и импортировать прямо в вашу систему.
https://github.com/hanscappelle/SO-2169649
(обратите внимание, что выбор нескольких файлов по-прежнему нуждается в работе)
Выбор одного изображения
С поддержкой изображений от файловых исследователей благодаря пользователю mad.
Выбор нескольких изображений
Поскольку кто-то запросил эту информацию в комментарии, лучше собирать информацию.
Установите дополнительный параметр
EXTRA_ALLOW_MULTIPLE
для намерения:И в проверке Result для этого параметра:
Обратите внимание, что это поддерживается только API уровня 18+.
источник
Вот обновление к прекрасному коду, который выложил hcpl. но это работает с файловым менеджером OI, файловым менеджером astro и галереей мультимедиа (проверено). так что я думаю, что это будет работать с каждым файловым менеджером (есть много других упомянутых?). сделал некоторые исправления в коде, который он написал.
источник
else return null;
вgetPath(Uri uri)
кreturn uri.getPath();
и избавиться от первойfilemanagerstring = selectedImageUri.getPath();
проверки. Таким образом, вы просто делаете один вызовgetPath(Uri)
и получаете путь назад (независимо от того, была ли использована Галерея или файловый менеджер).Методы hcpl отлично работают до KitKat, но не работают с API DocumentsProvider. Для этого просто следуйте официальному учебнику Android для провайдеров документов: https://developer.android.com/guide/topics/providers/document-provider.html -> откройте документ, раздел Bitmap.
Просто я использовал код hcpl и расширил его: если файл с найденным путем к изображению выдает исключение, я вызываю эту функцию:
Проверено на Nexus 5.
источник
Исходя из приведенного выше кода, я отразил код, подобный приведенному ниже, может быть, он более подходит:
источник
Я прошел через решение от @hcpl & @mad. Решение hcpl хорошо поддерживает локальное изображение в галерее, и Mad предоставило лучшее решение в дополнение к этому - оно также помогает загружать изображения OI / Astro / Dropbox. Но в моем приложении при работе с библиотекой Picasa, которая теперь интегрирована в галерею Android, оба решения терпят неудачу.
Я немного искал и анализировал, и в итоге нашел лучшее и элегантное решение, которое преодолевает это ограничение. Спасибо Димитру Даражанскому за его блог, который помог мне в этом деле, я немного изменил его, чтобы его было легче понять. Вот мое решение идет -
Проверьте это и дайте мне знать, если есть какая-то проблема с этим. Я проверил это, и это работает хорошо в каждом случае.
Надеюсь, это поможет всем.
источник
Предполагая, что у вас есть папка с изображениями в каталоге вашей SD-карты только для изображений.
Затем вы можете решить, что вы хотели бы сделать с контентом в вашей деятельности.
Это был пример получения пути к изображению, протестируйте его с помощью своего кода, чтобы убедиться, что вы можете обработать возвращаемые результаты. Вы можете изменить код по мере необходимости, чтобы лучше соответствовать вашим потребностям.
Мой совет, чтобы попытаться заставить изображения работать правильно, я думаю, что проблема заключается в доступе к изображениям на SD-карте. Посмотрите на Отображение изображений на SD-карте .
Если вы можете это запустить и запустить, возможно, с помощью примера, предоставляющего правильного поставщика, вы сможете найти обходной путь для своего кода.
Держите меня в курсе, обновляя этот вопрос с вашим прогрессом. Удачи
источник
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.GET_CONTENT typ=file:///sdcard/images/* }
startActivityforResult
и поставить деятельность. Вот что я имел в виду, решая, что делать дальше, мой плохой.startActivityForResult(intent, 1);
и все еще получаю эту ошибку ... Этот код находится за пределами Activity, но у меня есть ссылка на Activity и вызываюstartActivityForResult
метод для этой ссылки - может, в этом причина?1
это за твое прохождение? ПопробуйтеIMAGE_PICK
Intent.ACTION_PICK
вместоIntent.ACTION_GET_CONTENT
. Что вы имеете в видуIMAGE_PICK
? Там нет такой константы. Я тоже попробовалintent.setData(Uri.fromFile(new File("/sdcard/image/")));
. Я перепробовал все возможные комбинации, и, похоже, ничего не работает ...это мой обзор этой темы, здесь собрана вся информация, а также другие важные вопросы о переполнении стека. Он возвращает изображения от какого-либо поставщика, одновременно обрабатывая нехватку памяти и вращение изображения. Он поддерживает галереи, Picasa и файловые менеджеры, такие как Drop Box. Использование простое: в качестве входных данных конструктор получает распознаватель содержимого и URI. Результатом является окончательное растровое изображение.
Ссылки:
источник
Здесь есть два полезных руководства по выбору изображений с загружаемым исходным кодом:
Как создать Android Image Picker
Как выбрать и обрезать изображение на Android
Однако приложение будет вынуждено когда-нибудь закрыться, вы можете исправить это, добавив атрибут android: configChanges в основное действие в файле манифеста, например:
Кажется, что API камеры потерял контроль над ориентацией, так что это поможет. :)
источник
Шаг 1 Код для открытия галереи, чтобы выбрать фото:
Шаг 2 Код для получения данных в
onActivityResult
:источник
READ_EXTERNAL_STORAGE
Для отображения изображений и видео попробуйте это:
источник
На всякий случай это помогает; Я делаю это, чтобы получить растровое изображение:
источник
Ответы выше верны. Я столкнулся с другой проблемой, когда в HTC M8 происходит сбой моего приложения при выборе изображения из галереи. Я получаю нулевое значение для пути к изображению. Я исправил и оптимизировал следующее решение. в методе onActivityResult
}
источник
источник
источник
Получить файл определенного типа
Этот пример получит копию изображения.
Откройте файл определенного типа
При работе на 4.4 или выше, вы запрашиваете открыть файл, который управляется другим приложением
Первоначальный источник
источник
В дополнение к предыдущим ответам, если у вас есть проблемы с получением правильного пути (например, AndroZip), вы можете использовать это:
источник
Пожалуйста, найдите ответ для выбора одного изображения из галереи
источник
Самый быстрый способ открыть изображение из галереи или камеры.
Оригинальная ссылка: получить изображение из галереи в Android программно
Следующий метод получит изображение из галереи или камеры и покажет его в ImageView. Выбранное изображение будет сохранено внутри.
код для xml
Класс JAVA
источник
Вот мой пример, может быть, не так, как ваш случай.
при условии, что вы получаете формат base64 от вашего провайдера API, присвойте ему имя и расширение файла, сохраните его в определенном месте в файловой системе.
Не забудьте сначала установить правильного поставщика файлов в AndroidManifest.xml
где путь к файлу является XML в ... / res / xml / file_path.xml
Короче говоря, сначала подготовьте файловый провайдер, передайте Uri в Intent для известного и доступного источника изображения, в противном случае сохраните изображение в нужном месте, а затем передайте местоположение (как Uri) в Intent.
источник