获取应用程序目录

时间:2011-04-03 05:22:39

标签: android directory

有人知道我如何获取应用程序目录的路径? (例如/data/data/my.app.lication/

目前我正在使用这种方法:myActivity.getFilesDir().getParent();但在我看来,当有一个更简单的解决方案时,它就像一个解决方法。此外,副作用是创建files目录,这是不需要的。

澄清:首先 - 感谢回复者。我试着去了解是否存在已经存在的方法,而不是另一种解决方法。

7 个答案:

答案 0 :(得分:88)

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

getApplicationInfo().dataDir

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

答案 1 :(得分:83)

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

如果eclipse担心未被捕获的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);
}

答案 2 :(得分:20)

我得到了这个

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

from here

答案 3 :(得分:16)

在代码中使用它

ax.set_xlim([-.5,3]) #allow for space below zero and above max value

答案 4 :(得分:9)

对于当前的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;
}

答案 5 :(得分:3)

如果您尝试访问某个文件,请尝试按here所述的openFileOutput()openFileInput()方法。它们会自动将输入/输出流打开到内部存储器中的指定文件。这允许您完全绕过目录和File对象,这是一个非常干净的解决方案。

答案 6 :(得分:3)

基于@ jared-burrows的解决方案。对于任何包,但将Context作为参数传递...

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