Я пытаюсь получить изображение из галереи.
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select picture"), resultCode );
После того, как я вернулся из этого действия, у меня есть данные, содержащие Uri. Это выглядит как:
content://media/external/images/1
Как я могу преобразовать этот путь в настоящий (как " /sdcard/image.png
")?
Спасибо
android
image-gallery
Дэвс
источник
источник
uri.getPath()
не даст вам реальный путь?Ответы:
Вам действительно необходимо пройти физический путь?
Например,
ImageView.setImageURI()
иContentResolver.openInputStream()
позволить вам получить доступ к содержимому файла, не зная его реального пути.источник
Вот что я делаю:
и:
ПРИМЕЧАНИЕ:
managedQuery()
метод устарел, поэтому я его не использую.Последнее редактирование: Улучшение. Нам надо закрыть курсор !!
источник
@Rene Juuse - выше в комментариях ... Спасибо за ссылку!
. код для получения реального пути немного отличается от одного SDK к другому, поэтому ниже у нас есть три метода, которые работают с разными SDK.
getRealPathFromURI_API19 (): возвращает реальный путь для API 19 (или выше, но не протестирован) getRealPathFromURI_API11to18 (): возвращает реальный путь для API 11 к API 18 getRealPathFromURI_below11 (): возвращает реальный путь для API ниже 11
шрифт: http://hmkcode.com/android-display-selected-image-and-its-real-path/
ОБНОВЛЕНИЕ 2016 Март
Чтобы исправить все проблемы с путями к изображениям, я пытаюсь создать собственную галерею в виде facebook и других приложений. Это потому, что вы можете использовать только локальные файлы (реальные файлы, а не виртуальные или временные), я решаю все проблемы с этой библиотекой.
https://github.com/nohana/Laevatein (эта библиотека предназначена для фотографирования с камеры или выбора из галереи, если вы выберете из галереи, у него есть ящик с альбомами и просто показать локальные файлы)
источник
Примечание. Это улучшение в ответе @ user3516549, и я проверял его на Moto G3 с Android 6.0.1. У
меня есть эта проблема, поэтому я попробовал ответить на @ user3516549, но в некоторых случаях он не работал должным образом. Я обнаружил, что в Android 6.0 (или выше), когда мы запускаем намерение выбора изображения из галереи, открывается экран, на котором отображаются последние изображения, когда пользователь выбирает изображение из этого списка, мы получаем uri как
в то время как, если пользователь выберет галерею из выдвижного ящика вместо недавних, мы получим uri как
Так что я справлюсь с этим
getRealPathFromURI_API19()
РЕДАКТИРОВАТЬ: если вы пытаетесь получить путь к файлу изображения на внешней SD-карте в более поздней версии, проверьте мой вопрос
источник
РЕДАКТИРОВАТЬ: используйте это решение здесь: https://stackoverflow.com/a/20559175/2033223 Работает отлично!
Прежде всего, спасибо за решение @luizfelipetx
Я немного изменил ваше решение. Это работает для меня:
Примечание. Итак, у нас есть документы и изображение, в зависимости от того, откуда взялось изображение: из «последних», «галереи» или чего-то еще. Поэтому я сначала извлекаю идентификатор изображения, прежде чем искать его.
источник
Привет, вот мой полный код для получения изображения с камеры или галереи
// Объявление моей переменной
//По щелчку
// тело метода
// И остальное
источник
options.inSampleSize = calculateInSampleSize(options, 100, 100);
Это помогло мне получить uri из галереи и преобразовать в файл для многостраничной загрузки.
https://github.com/iPaulPro/aFileChooser/blob/master/aFileChooser/src/com/ipaulpro/afilechooser/utils/FileUtils.java
источник