getExternalFilesDirs() не обновляется в ApplicationContext при вставке SD-карты в API 23 и выше

#android #android-6.0-marshmallow #android-context #android-sdcard

#Android #android-6.0-marshmallow #android-контекст #android-sdcard

Вопрос:

Когда приложение запущено на переднем плане, вставьте SD-карту и попытайтесь восстановить путь с помощью

 ctx.getExternalFilesDirs(Environment.DIRECTORY_DOWNLOADS);
  

где контекст — это когда-либо контекст приложения и активности

При использовании контекста активности получите обновленный путь к SD-карте, но при использовании контекста приложения не получайте обновленный путь

Это происходит только в API 23 и 24

Обходным путем является завершение работы приложения и повторный запуск приложения

Кто-нибудь знает, это ошибка Marshmallow?

Примечание: я вижу, что некоторые создали проблему в выпуске 214247 Google

Комментарии:

1. Итак, вы выполняете горячую замену?

Ответ №1:

используйте Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) вместе с Environment.getExternalStorageState()

Тип DIRECTORY_DOWNLOAD не указан в качестве допустимого параметра для getExternalFilesDir(), пожалуйста, проверьте документацию: https://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.Строка)

Комментарии:

1. Спасибо за ответ, но я попытался использовать упомянутый вами вариант, но Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) он возвращает только основной путь к хранилищу, getExternalStoragePublicDirectory: /storage/emulated/0 а не путь к SD-карте