获取应用程序目录

有人知道我如何获得我的应用程序目录的path? (如/data/data/my.app.lication/

目前我正在使用这个方法: myActivity.getFilesDir().getParent(); 但是在我看来,只要有一个简单的解决scheme就可以解决这个问题。 另外,副作用是创buildfiles目录,这是不需要的。

澄清:首先 – 感谢repliers。 我试图了解是否已经存在的方法,而不是另一个解决方法。

 PackageManager m = getPackageManager(); String s = getPackageName(); PackageInfo p = m.getPackageInfo(s, 0); s = p.applicationInfo.dataDir; 

如果日食担心未被捕获的NameNotFoundException ,你可以使用:

 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); } 

用min API 4+获得应用程序数据目录有一个更简单的方法。 从任何上下文(例如活动,应用程序):

 getApplicationInfo().dataDir 

http://developer.android.com/reference/android/content/Context.html#getApplicationInfo();

我懂了

 String appPath = App.getApp().getApplicationContext().getFilesDir().getAbsolutePath(); 

从这里 :

只需在你的代码中使用这个

 context.getApplicationInfo().dataDir 

对于当前的Android应用程序包:

 public String getDataDir(final Context context) throws Exception { return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).applicationInfo.dataDir; } 

对于任何包:

 public String getAnyDataDir(final Context context, final String packageName) throws Exception { return context.getPackageManager().getPackageInfo(packageName, 0).applicationInfo.dataDir; } 

如果您试图访问文件,请按照此处所述尝试openFileOutput()openFileInput()方法。 它们会自动打开input/输出stream到内存中的指定文件。 这允许你完全绕过目录和File对象,这是一个非常干净的解决scheme。

基于@ jared-burrows的解决scheme。 对于任何包,但传递上下文作为参数…

 public static String getDataDir(Context context) throws Exception { return context.getPackageManager() .getPackageInfo(context.getPackageName(), 0) .applicationInfo.dataDir; }