有人知道如何獲取我的應用程序目錄的路徑嗎? (例如/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