有人知道如何获取我的应用程序目录的路径吗? (例如/data/data/my.app.lication/
)获取应用程序目录
目前我正在使用这种方法:myActivity.getFilesDir().getParent();
但在我看来,如果有更简单的解决方案,它就像是一种解决方法。另外,副作用是创建不需要的files
目录。
澄清:首先 - 谢谢你的回报。我尝试了解是否已经存在这样做的方法,而不是用于其他解决方法。
有人知道如何获取我的应用程序目录的路径吗? (例如/data/data/my.app.lication/
)获取应用程序目录
目前我正在使用这种方法:myActivity.getFilesDir().getParent();
但在我看来,如果有更简单的解决方案,它就像是一种解决方法。另外,副作用是创建不需要的files
目录。
澄清:首先 - 谢谢你的回报。我尝试了解是否已经存在这样做的方法,而不是用于其他解决方法。
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);
}
对于目前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;
}
基于@贾里德-洞穴溶液。对于任何包,但通过上下文作为参数...
public static String getDataDir(Context context) throws Exception {
return context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0)
.applicationInfo.dataDir;
}
还有一个更简单的方式来获得与最小API的应用程序数据目录4+。从任何上下文(例如活动,应用程序):
getApplicationInfo().dataDir
http://developer.android.com/reference/android/content/Context.html#getApplicationInfo()
只需使用此代码中的
context.getApplicationInfo().dataDir
在Android 5.1上很棒,谢谢!很好很简单。 – 2017-11-09 03:27:03
@MByD:出于好奇,具体是什么,你想干什么?你应该不需要该目录。例如,如果你想使用数据库目录,使用'getDatabasePath()'。或者,如果您希望自己的目录独立于其他任何目录,请使用'getDir()'。 – CommonsWare 2011-04-03 11:56:24
@CommonsWare - 我有一个不在我的控制下的共享对象,它在我的包文件夹下创建了几个文件夹,我需要访问它们。我只是想知道为什么不是某种方法可用的基础文件夹。 – MByD 2011-04-03 12:06:23
@MyByD:告诉谁写了共享对象头部检查。 – CommonsWare 2011-04-03 12:51:56