GetFilesDir() vs Environment.getDataDirectory()

Я хочу заменить один контекстный метод на переменную среды.
Но не уверен, что они означают то же самое.

В чем разница между

getFilesDir() и Environment.getDataDirectory()?

Как я могу получить data\data как a из data\data\com.Myapp с помощью Environment Variable?

Ответы

Ответ 1

Из ЗДЕСЬ и ЗДЕСЬ

public Файл getFilesDir()

Возвращает абсолютный путь к каталогу в файловой системе, где хранятся файлы, созданные с помощью openFileOutput(String, int).

публичный статический файл getExternalStorageDirectory()

Вернуть основной каталог внешнего хранилища. Этот каталог в настоящее время недоступен, если он был установлен пользователем на своем компьютере, был удален с устройства или возникла какая-то другая проблема. Вы можете определить его текущее состояние с помощью getExternalStorageState().

Примечание. Не путайте слово "внешний" здесь. Этот каталог лучше воспринимать как медиа/общую память. Это файловая система, которая может хранить относительно большой объем данных и совместно используется во всех приложениях (не обеспечивает разрешения). Традиционно это SD-карта, но она также может быть реализована как встроенное хранилище в устройстве, которое отличается от защищенного внутреннего хранилища и может быть смонтировано как файловая система на компьютере.

На устройствах с несколькими пользователями (как описано UserManager) каждый пользователь имеет собственное изолированное внешнее хранилище. Приложения имеют доступ только к внешнему хранилищу для пользователя, которого они запускают как.

Если вы хотите, чтобы ваш путь приложения использовал getFilesDir(), который даст вам путь /data/data/your package/files

Вы можете получить путь, используя Environment var вашего data/package, используя

getExternalFilesDir(Environment.getDataDirectory().getAbsolutePath()).getAbsolutePath();, который вернет путь из корневого каталога вашего внешнего хранилища, как /storage/sdcard/Android/data/your pacakge/files/data

Чтобы получить доступ к внешним ресурсам, вы должны предоставить разрешение WRITE_EXTERNAL_STORAGE и READ_EXTERNAL_STORAGE в вашем манифесте.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

Ознакомьтесь с Лучшей документацией, чтобы получить пути директив

Ответ 2

Enironment возвращает каталог данных пользователя. И getFilesDir возвращает каталог приложения.

Ответ 3

getFilesDir()

Возвращает абсолютный путь к каталогу в файловой системе, где хранятся файлы, созданные с помощью openFileOutput (String, int).

Environment.getDataDirectory()

Верните каталог пользовательских данных.

Ответ 4

Попробуйте это

getExternalFilesDir(Environment.getDataDirectory().getAbsolutePath()).getAbsolutePath()