Что может заставить getExternalFilesDir возвращать путь с внешней SD-карты? - PullRequest
0 голосов
/ 31 октября 2018

Я использую 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 вопроса:

  1. что может привести к тому, что sdcard будет отображаться как getExternalFilesDir, а не как путь к внутренней памяти? Я не смог увидеть его на своем устройстве, даже если у меня вставлена ​​SD-карта. Поскольку внутреннее хранилище должно быть возвращено первым.

  2. Почему getUriForFile вылетает при использовании пути от внешней SDCard и как это исправить?

Путь к моим файлам содержит <external-files-path > запись и отлично работает без сбоев при использовании storage/emulated/0/Android path

Я видел какой-то ответ на Ошибка FileProvider на устройствах Huawei , что некоторые устройства по-разному возвращают путь на ContextCompat.getExternalFilesDirs и другие упоминания (https://github.com/linchaolong/ImagePicker/issues/10), что getUriForFile использует внутренне ContextCompat.getExternalFilesDirs звоните.

...