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

问题描述 投票:10回答:2

可以获取安装程序文件名,该文件名存储在/ sdcard /下载/ ?我想从应用程序获取,安装它的apk文件名。有一种简单的方法可以做到这一点,尤其是对于非市场应用程序?

android apk android-install-apk
2个回答
3
投票

更好的方法肯定是在清单中包含版本字符串。这确实是唯一可靠(专业)的方法。 Android不会在任何地方存储包含APK的文件的名称,因此无法获取它。

从理论上讲,您可能可以使用FileObserver来构建某些文件,该文件可以监视某些目录中的文件创建,并且每次使用扩展名.apk创建文件时,您都可以打开文件,提取清单并找到文件的包名。 APK,然后将其与文件名一起存储在一些持久性存储中。然后,当您需要获取版本信息时,可以在持久性存储中查找以获取与所需软件包名称匹配的文件名。

当然,仅当您的应用安装在设备上[[之前其他APK文件已下载/安装时,这才有效。这无法找出您自己的应用程序的文件名。


2
投票
嗯,我不确定您的sdcard或下载文件夹是什么意思,但是您可以在系统/ 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目录中的路径时,您可能会尝试在其他目录中搜索相同(相似)文件(假设未删除),因为安装时android软件包已复制到/ data目录中。

© www.soinside.com 2019 - 2024. All rights reserved.