Android:如何以编程方式获取安装程序文件名?

可以获取存储在/ sdcard / download /上的安装程序文件名 我想从安装它的应用程序,apk文件名得到。 有一个简单的方法来做到这一点,特别是与非市场应用程序?

Solutions Collecting From Web of "Android:如何以编程方式获取安装程序文件名?"

更好的方法是在清单中包含版本string。 这真的是唯一可靠(和专业)的方法。 Android不会在任何地方存储包含APK的文件的名称,所以没有办法可以得到它。

理论上你可以使用FileObserver构build一些东西,在某些目录中观看文件创build,每次创build文件时都可以使用扩展名.apk打开文件,提取清单,findAPK的包名,然后存储以及一些持久性存储中的文件名。 然后,当您需要获取版本信息时,您可以查看persisten存储以获取与您需要的软件包名称匹配的文件名。

当然,只有在下载/安装了其他APK文件之前 ,您的应用程序已经安装在设备上,这才会起作用。 这将无法find你自己的应用程序的文件名。

嗯,我不知道你的意思是由SD卡或下载文件夹,但你可以得到apkpath在系统/数据目录:

命令行:

 $ 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”的string

在/ data目录中获取path时,可能会尝试在其他目录中search相同(相似)的文件(假设它未被删除),因为android包在安装时被复制到/ data目录。