2

我正在尝试获取我当前在 android 上运行的 apk 的路径。我正在使用 System.getProperty("user.dir")。但是它给出了一个“/”,它是Android系统的根目录。我错过了什么吗?

4

4 回答 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 回答