Из документов вы можете увидеть:
getExternalStoragePublicDirectory(String type)
Этот метод устарел на уровне API 29. Для улучшения конфиденциальности пользователей прямой доступ к общим / внешним устройствам хранения не рекомендуется. когда
приложение предназначено для Build.VERSION_CODES.Q, путь, возвращаемый из этого
метод больше не доступен напрямую для приложений. Приложения могут продолжать
доступ к содержимому, хранящемуся в общем / внешнем хранилище, путем миграции
альтернативы, такие как Context # getExternalFilesDir (String),
MediaStore или Intent # ACTION_OPEN_DOCUMENT.
Ничего не передавать в качестве параметра этой функции, чтобы получить каталог как объект File
:
Context.getExternalFilesDir();
Здесь «Контекст» - это объект, который получается this.getContext();
this
- текущий объект действия. Внимательно проверяйте прицел при его использовании.
Важно
Для доступа к Внутреннему хранилищу Manifest.permission.WRITE_EXTERNAL_STORAGE
и / или Manifest.permission.READ_EXTERNAL_STORAGE
требуются в файле AndroidManifest.xml .
Дополнительная информация:
Обычно внутренний накопитель имеет путь
/ SDCard / на устройствах Android. Это не реальный путь, а символическая ссылка .
Это сбивает с толку, но «внешняя SD-карта» в Android фактически означает внутреннее хранилище устройства, а не внешнее извлекаемое хранилище карты памяти вне устройства.
Также обратите внимание, что настоящий внешний SDCard не может иметь полный доступ
Activity * Класс 1051 * расширяет класс Context Вот почему мы можем получить из него контекст.