Android Obtenga el Directorio de Datos ‘Inicio’ de la Aplicación

Una pregunta simple, relacionada con el directorio predeterminado ‘home’ cuando una aplicación escribe en la memoria interna. Por defecto, cualquier archivo creado es colocado por el sistema operativo (2.2) en:

/data/data/your.package/files 

Al leer en archivos, se utiliza el mismo valor predeterminado, al mantener el contexto adecuado a través de openFileInput() , openFileOutput() . Pero si necesito verificar la existencia del archivo, por ejemplo, usando la clase File, necesito especificar la ruta completa en el constructor.

Veo que hay Environment.getDataDirectory() (returns /data ), Environment.getRootDirectory() (returns /system ), etc., pero nada relacionado con obtener el directorio ‘home’ de la aplicación.

No es un gran problema, pero prefiero no codificar completamente la ruta completa en mi aplicación de archivo para usar (digamos que el nombre del paquete cambia, digamos que la ruta cambia en una futura versión del sistema operativo) si hay alguna manera de hacer referencia al directorio “de inicio” de la aplicación mediante progtwigción.

Por supuesto, nunca falla. Encontré la solución aproximadamente un minuto después de publicar la pregunta anterior … solución para aquellos que pueden haber tenido el mismo problema:

 ContextWrapper.getFilesDir() 

Encontrado aquí .

Puedes probar Context.getApplicationInfo().dataDir si quieres la carpeta de datos persistente del paquete.

getFilesDir() devuelve un subroot de esto.

Para obtener la ruta del archivo en el paquete de la aplicación;

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