可以获取安装程序文件名,该文件名存储在/ sdcard /下载/ ?我想从应用程序获取,安装它的apk文件名。有一种简单的方法可以做到这一点,尤其是对于非市场应用程序?
更好的方法肯定是在清单中包含版本字符串。这确实是唯一可靠(专业)的方法。 Android不会在任何地方存储包含APK的文件的名称,因此无法获取它。
从理论上讲,您可能可以使用FileObserver
来构建某些文件,该文件可以监视某些目录中的文件创建,并且每次使用扩展名.apk
创建文件时,您都可以打开文件,提取清单并找到文件的包名。 APK,然后将其与文件名一起存储在一些持久性存储中。然后,当您需要获取版本信息时,可以在持久性存储中查找以获取与所需软件包名称匹配的文件名。
当然,仅当您的应用安装在设备上[[之前其他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目录中的路径时,您可能会尝试在其他目录中搜索相同(相似)文件(假设未删除),因为安装时android软件包已复制到/ data目录中。