为什么System.getProperty(“user.dir”)返回“/”

时间:2013-05-18 00:20:12

标签: java android

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

4 个答案:

答案 0 :(得分:4)

正如documentation所说,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);
}

上面将为您提供所有已安装apks的源路径。

该示例来自here

答案 1 :(得分:1)

安装在内存后,您的apk位于/data/app/<your_package_name>。此路径在Android中保持一致,您无需使用System

答案 2 :(得分:1)

检查Context课程。你想要的功能是:

  • 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”

等等。

答案 3 :(得分:0)

ApplicationInfo课程是你的答案:

PackageManager pm = getPackageManager();

for (ApplicationInfo app : pm.getInstalledApplications(0)) {
  if (app.packageName.equals(appPackage) { Log.i( app.sourceDir); }
}

希望对你进行分类。