有人知道如何获取应用程序目录的路径吗?(例如/data/data/my.app.lication/
)
当前,我正在使用这种方法:myActivity.getFilesDir().getParent();
但是在我看来,有一个更简单的解决方案时,这是一种解决方法。同样,副作用是files
目录的创建,这是不必要的。
澄清:首先-感谢您的答复。我尝试了解是否已经存在执行此操作的方法,而不是其他解决方法。
有人知道如何获取应用程序目录的路径吗?(例如/data/data/my.app.lication/
)
当前,我正在使用这种方法:myActivity.getFilesDir().getParent();
但是在我看来,有一个更简单的解决方案时,这是一种解决方法。同样,副作用是files
目录的创建,这是不必要的。
澄清:首先-感谢您的答复。我尝试了解是否已经存在执行此操作的方法,而不是其他解决方法。
;)
Answers:
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);
}
sourceDir
是一个不幸的错误命名。dataDir
应该是您要寻找的。
使用最小API 4+可以更简单地获取应用程序数据目录。从任何上下文(例如活动,应用程序):
getApplicationInfo().dataDir
http://developer.android.com/reference/android/content/Context.html#getApplicationInfo()
对于当前的Android应用程序包:
public String getDataDir(Context context) throws Exception {
return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).applicationInfo.dataDir;
}
对于任何包装:
public String getAnyDataDir(Context context, String packageName) throws Exception {
return context.getPackageManager().getPackageInfo(packageName, 0).applicationInfo.dataDir;
}
如果你想获得对文件的访问,请尝试openFileOutput()
和openFileInput()
所描述的方法在这里。它们自动将输入/输出流打开到内部存储器中的指定文件。这使您可以File
完全绕开目录和对象,这是一个非常干净的解决方案。
getDatabasePath()
。或者,如果您希望自己的目录独立于其他任何东西,请使用getDir()
。