показать путь к изображению (выбранному из внутреннего хранилища для отображения в режиме просмотра изображений) в текстовом режиме [дубликат]

Мое обходное решение:

function add(a, b, precision) {
    var x = Math.pow(10, precision || 2);
    return (Math.round(a * x) + Math.round(b * x)) / x;
}

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

4
задан Priya Mall 8 March 2016 в 16:02
поделиться

2 ответа

Если вам абсолютно нужна локальная копия файла, вам нужно будет открыть InputStream копию содержимого в локальный файл, в котором вы знаете путь, а затем перейти оттуда. Sidenote: Guava ByteStreams#copy - это простой способ выполнить это.

Конечно, этот файл больше не поддерживается исходным источником Uri, поэтому я не думаю, что это то, что вы хотите. Вместо этого вы должны работать с API-интерфейсом Uri. Взгляните на Storage Access Framework

Изменить

Вот как вы можете получить InputStream из вашего Uri

InputStream inputStream = getContentResolver().openInputStream(uri);
1
ответ дан Scott Tomaszewski 23 August 2018 в 19:23
поделиться

Как я могу получить путь к файлу из этого типа URI контента?

У вас нет, так как нет никакого файла вообще за Uri, не говоря уже о том, к которому вы можете получить доступ. Это Uri может указывать на:

  • Локальный файл на внешнем хранилище
  • Локальный файл на внутренней памяти для другого приложения
  • Локальный файл на съемном носителе
  • Локальный файл, который зашифрован и должен быть дешифрован на лету
  • Поток байтов, хранящихся в столбце BLOB в базе данных
  • Часть содержимого, которое должно быть загружено другим приложением первым
  • ... и т. д.

Все другие приложения, такие как Facebook, Google+ это делает

Нет, это не так. Они используют ContentResolver и:

  • openInputStream() для чтения в байтах, связанных с содержимым
  • getType(), чтобы получить тип MIME, связанный с содержимым
  • query() и OpenableColumns, чтобы получить размер и отображаемое имя, связанные с контентом
3
ответ дан CommonsWare 23 August 2018 в 19:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: