我正在尝试获取我当前在 android 上运行的 apk 的路径。我正在使用 System.getProperty("user.dir")。但是它给出了一个“/”,它是Android系统的根目录。我错过了什么吗?
问问题
6900 次
4 回答
4
正如文档所说,该user.dir
属性是用户工作目录,它不一定与放置您的 apk 的目录相同。
无论如何,它List<ApplicationInfo> PackageManager.getInstalledApplications()
会给你一个已安装应用程序的列表,并且ApplicationInfo.sourceDir
是.apk
文件的路径。
这是一些示例代码:
PackageManager pm = getPackageManager();
for (ApplicationInfo app : pm.getInstalledApplications(0)) {
System.out.println("SourceDir: " + app.sourceDir);
}
以上将为您提供所有已安装 apk 的源路径。
该示例取自此处。
于 2013-05-18T00:29:49.467 回答
1
检查上下文类。您想要的功能是:
- getDir() -- 返回例如“/data/data/com.example.myapp/app_foo”
- getFilesDir() -- 返回例如“/data/data/com.example.myapp/files”
- getCacheDir() -- 返回例如“/data/data/com.example.myapp/cache”
- getExternalFilesDir() -- 返回例如“/sdcard/Android/data/com.example.myapp/files/Pictures”
- getExternalCacheDir() -- 返回例如“/sdcard/Android/data/com.example.myapp/cache”
等等。
于 2013-05-18T01:24:28.090 回答
1
安装后,您的 apk 位于/data/app/<your_package_name>
内存中。此路径在整个 Android 中是一致的,您无需使用System
.
于 2013-05-18T00:29:37.503 回答
0
ApplicationInfo类是您的答案:
PackageManager pm = getPackageManager();
for (ApplicationInfo app : pm.getInstalledApplications(0)) {
if (app.packageName.equals(appPackage) { Log.i( app.sourceDir); }
}
希望对你有所帮助。
于 2013-05-18T00:30:36.080 回答