有人知道我如何获取应用程序目录的路径? (例如/data/data/my.app.lication/
)
目前我正在使用这种方法:myActivity.getFilesDir().getParent();
但在我看来,当有一个更简单的解决方案时,它就像一个解决方法。此外,副作用是创建files
目录,这是不需要的。
澄清:首先 - 感谢回复者。我试着去了解是否存在已经存在的方法,而不是另一种解决方法。
答案 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();
答案 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;
}