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 шт):
Нет. Google отказывается от подобной работы с файлами. Начиная с API 29+ вы должны использовать один из следующих инструментов: Storage Access Framework, Media Store и File Provider.
Вот тут можно почитать про эти изменения.
Что касается приложений, для которых нужен полный доступ к файловой системе - можно прочитать вот здесь.