2016-01-14 3 views
0

Я использую Storage Access Framework(SAF) в своем приложении. Чтобы сканировать файл (фото или документ), мне нужно отправить локальный путь файла через API. Мне удалось правильно настроить SAF, и теперь, когда пользователь выбирает файл, и я получаю Uri, как и предполагалось.Android - Storage Access Framework - Uri в локальный файл

Как кажется, Uri является ключом к облаку, а не локальным файлом.

Значение Uri выглядит следующим образом:

content://com.android.providers.media.documents/document/image:11862 

Как я могу преобразовать этот Ури в локальный файл? Должен ли я загрузить файл из облака? Как мне это сделать?

ответ

2

Как кажется, Uri является ключом к облаку, а не локальным файлом.

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

Как я могу преобразовать этот Uri в локальный файл?

В идеале вы этого не сделаете. В идеале вы «сканируете файл (фото или документ)», используя некоторую библиотеку, которая поддерживает InputStream. В этом случае вы используете ContentResolver и openInputStream(), чтобы передать поток в библиотеку.

Если ваша библиотека не поддерживает InputStream в качестве источника данных, вам нужно будет использовать openInputStream() самостоятельно, используя Java I/O, чтобы сделать копию содержимого в виде файла в файловой системе, чтобы вы могли перейти в библиотеку ,

Смежные вопросы