Android Get Application 'Home' Data Directory

Простой вопрос, связанный с каталогом «home» по умолчанию, когда приложение записывается во внутреннюю память. По умолчанию любые созданные файлы помещаются ОС (2.2) в:

/data/data/your.package/files 

При чтении в файлах используется то же значение по умолчанию, которое поддерживается в правильном контексте через openFileInput() , openFileOutput() . Но если мне нужно проверить существование файла, например, используя класс File, мне нужно указать весь путь в конструкторе.

Я вижу, что есть Environment.getDataDirectory() (возвращает /data ), Environment.getRootDirectory() (возвращает /system ) и т. Д., Но ничего не связано с получением «домашнего» каталога приложения.

Это не огромная сделка, но я бы предпочел не жестко закодировать полный путь в моем приложении для файла (скажем, имя пакета меняется, скажем, изменение пути в будущей версии ОС), если есть способ ссылаться на App 'home' каталог программно.

Solutions Collecting From Web of "Android Get Application 'Home' Data Directory"

Конечно, никогда не терпит неудачу. Нашел решение примерно через минуту после публикации вышеуказанного вопроса … решение для тех, у кого могла быть одна и та же проблема:

 ContextWrapper.getFilesDir() 

Найдено здесь .

Вы можете попробовать Context.getApplicationInfo().dataDir если вы хотите, чтобы постоянная папка данных пакета.

getFilesDir() возвращает подкрот этого.

Получить путь к файлу в пакете приложений;

 ContextWrapper c = new ContextWrapper(this); Toast.makeText(this, c.getFilesDir().getPath(), Toast.LENGTH_LONG).show();