Я использую context.getExternalFilesDir
для получения папки приложения, и на большинстве устройств карта эмуляции внутреннего хранилища: /storage/emulated/0/Android/data/mypackage.com/files
Это верно и согласно документам:
Возвращает абсолютный путь к каталогу на основном общем / внешнем устройстве хранения, где приложение может размещать свои постоянные файлы.
Теперь в папке, созданной для этого возвращенного getExternalFilesDir
, у меня есть файл myimage.png
, которым я хочу поделиться с другим приложением, при вызове FileProvider.getUriForFile(...myimage.png)
на некоторых устройствах выдается ошибка, которая выглядит так:
Не удалось найти настроенный корень, который содержит /storage/1234-1234/Android/data/mypackage.com/files
У меня есть 2 вопроса:
что может привести к тому, что sdcard будет отображаться как getExternalFilesDir
, а не как путь к внутренней памяти? Я не смог увидеть его на своем устройстве, даже если у меня вставлена SD-карта. Поскольку внутреннее хранилище должно быть возвращено первым.
Почему getUriForFile
вылетает при использовании пути от внешней SDCard и как это исправить?
Путь к моим файлам содержит <external-files-path >
запись и отлично работает без сбоев при использовании storage/emulated/0/Android
path
Я видел какой-то ответ на Ошибка FileProvider на устройствах Huawei , что некоторые устройства по-разному возвращают путь на ContextCompat.getExternalFilesDirs
и другие упоминания (https://github.com/linchaolong/ImagePicker/issues/10), что getUriForFile
использует внутренне ContextCompat.getExternalFilesDirs
звоните.