¿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 files
directorio, 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
sourceDir
es un nombre erróneo desafortunado.dataDir
deberí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().dataDir
http://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().dataDir
fuente
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 losFile
objetos 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