¿Alguien sabe cómo obtengo la ruta del directorio de mi aplicación? (por ejemplo /data/data/my.app.lication/)
Actualmente estoy usando este método: myActivity.getFilesDir().getParent();pero me parece una solución cuando hay una solución más simple. Además, el efecto secundario es la creación del filesdirectorio, que no es necesario.
Aclaración: Primero, gracias por las respuestas. Intento entender si ya existe un método que lo haga, no para otra solución.

getDatabasePath(). O, si desea tener su propio directorio independiente de cualquier otra cosa, utilicegetDir().;)Respuestas:
PackageManager m = getPackageManager(); String s = getPackageName(); PackageInfo p = m.getPackageInfo(s, 0); s = p.applicationInfo.dataDir;Si eclipse se preocupa por un no detectado
NameNotFoundException, puede usar:PackageManager m = getPackageManager(); String s = getPackageName(); try { PackageInfo p = m.getPackageInfo(s, 0); s = p.applicationInfo.dataDir; } catch (PackageManager.NameNotFoundException e) { Log.w("yourtag", "Error Package name not found ", e); }fuente
sourceDires un nombre erróneo desafortunado.dataDirdebería ser lo que estás buscando.Existe una forma más sencilla de obtener el directorio de datos de la aplicación con una API mínima 4+. Desde cualquier contexto (por ejemplo, actividad, aplicación):
getApplicationInfo().dataDirhttp://developer.android.com/reference/android/content/Context.html#getApplicationInfo ()
fuente
tengo esto
String appPath = App.getApp().getApplicationContext().getFilesDir().getAbsolutePath();desde aqui :
fuente
Solo usa esto en tu código
context.getApplicationInfo().dataDirfuente
android.os.Environment.getDataDirectory().getAbsolutePath()?Para el paquete de aplicaciones de Android actual:
public String getDataDir(Context context) throws Exception { return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).applicationInfo.dataDir; }Para cualquier paquete:
public String getAnyDataDir(Context context, String packageName) throws Exception { return context.getPackageManager().getPackageInfo(packageName, 0).applicationInfo.dataDir; }fuente
Si está intentando obtener acceso a un archivo, pruebe los métodos
openFileOutput()yopenFileInput()como se describe aquí . Abren automáticamente flujos de entrada / salida al archivo especificado en la memoria interna. Esto le permite omitir el directorio y losFileobjetos por completo, lo cual es una solución bastante limpia.fuente
Basado en la solución de @jared-burrows. Para cualquier paquete, pero pasando Context como parámetro ...
public static String getDataDir(Context context) throws Exception { return context.getPackageManager() .getPackageInfo(context.getPackageName(), 0) .applicationInfo.dataDir; }fuente