是否可能获取存储在 /sdcard/download/ 的安装程序文件名?我想要从我的应用中获取已安装它的apk文件名。是否有一种简便的方法,特别是对于非市场应用程序?
是否可能获取存储在 /sdcard/download/ 的安装程序文件名?我想要从我的应用中获取已安装它的apk文件名。是否有一种简便的方法,特别是对于非市场应用程序?
嗯,我不确定您所说的是SD卡还是下载文件夹,但您可以在系统/data目录中获取apk路径:
命令行:
$ adb shell pm list packages | grep mk.trelloapp
package:mk.trelloapp
$ adb shell pm path mk.trelloapp
package:/data/app/mk.trelloapp-1/base.apk
或者从您的Android应用程序代码中:(只需运行进程)
Process exec = Runtime.getRuntime().exec("pm path mk.trelloapp");
exec.waitFor();
InputStream inputStream = exec.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder builder = new StringBuilder();
String line = null;
while( ( line = br.readLine()) != null ) {
builder.append(line);
}
String commandOutput = builder.toString();
上面的代码应该只会给你一个包含"package:/data/app/mk.trelloapp-1/base.apk"的字符串。
当你在/data目录中获取路径时,你可以尝试在其他目录中搜索相同(或类似)的文件(假设它没有被删除),因为安卓包在安装时被复制到/data目录中。
/data
的APK路径不包括此信息,因为它仅使用包名称。 - David WasserFileObserver
构建某个东西,以监视某些目录中的文件创建,并且每次创建具有扩展名.apk
的文件时,您可以打开该文件,提取清单,查找APK的软件包名称,然后将其与文件名一起存储在某些持久性存储中。然后,当您需要获取版本信息时,可以查看持久存储以获取与所需软件包名称匹配的文件名。