Android. getExternalStorageDirectory() depricated. Правильная работа с файловой системой?

Тестирую приложение на android 10.

Environment.getExternalStorageDirectory().getAbsolutePath() возвращает /storage/emulated/0, но данная функция помечена как deprecated.

Из документации android:

It's important that you use directory names provided by API constants like DIRECTORY_PICTURES. These directory names ensure that the files are treated properly by the system. If none of the pre-defined sub-directory names suit your files, you can instead pass null into getExternalFilesDir(). This returns the root app-specific directory within external storage.

Используя getExternalFilesDir(null).getAbsolutePath() получаю путь /storage/emulated/0/Android/data/myapp/files.

Как я понял, писать пути напрямую очень плохая идея, т.к. на разных устройствах они разнятся. Но я не могу понять, есть ли аналог deprecated функции, который позволит получить путь к корню файловой системы external storage, т.е. /storage/emulated/0.

Правка: Путь мне нужен для того, что бы создать папку в корне external storage, и в ней хранить файлы.


Ответы (1 шт):

Автор решения: Sergei Buvaka

Нет. Google отказывается от подобной работы с файлами. Начиная с API 29+ вы должны использовать один из следующих инструментов: Storage Access Framework, Media Store и File Provider.

Вот тут можно почитать про эти изменения.

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

→ Ссылка