如何获取存储在 android 设备的外部存储器中的 .apk 文件详细信息(如:名称、ID、vercode ..等)

How to get .apk files details (like: name, id, vercode ..etc) stored in external storage of android device

如何获取目录中存储的 .apk 文件 详细信息(如:名称、包名、vercode ..等)(如:/storage/emulated/0/downloads)即使它们未安装在设备上。

例如,1mobile market可以获取所有存储在您设备中的.apk文件并要求您安装它们。

如屏幕截图所示,这些应用程序未安装在我的设备上,但 Market 可以加载图标、名称、版本和大小。怎么做?!

实际上 apk 文件是 zip archives,您可以将文件重命名为 yourAppName.apk.zip 并使用任何 zip 实用程序(例如 7zip)将其解压缩。

将提取 androidmanifest.xml 文件和资源,您会在其中找到所有这些信息...

注意: 源代码不在包中 - 只有编译后的 .dex 文件 ("Dalvik Executable")

一个 apk 文件实际上只是一个 zip 压缩文件,具有不同的名称。将 x.apk 重命名为 x.zip,其中 x 是文件名,您将能够使用任何压缩工具打开它。关于是否可以在 apk 文件中找到它实际上取决于您要查找的信息。我可以说您可以访问 AndroidManifest.xml 文件,其中有关应用程序访问权限等的关键信息以相当可读的形式存储。

您可以使用"aapt dump badging ",它将为您提供申请详情

                   Process p;
                    try {
                        p = Runtime.getRuntime().exec(aapt dump badging <APK_FILE NAME>);
                        p.waitFor();
                        final BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
                        String line = "";
                        while ((line = reader.readLine()) != null) {
                            output.append(line);
                            break;
                        }
                        logger.info("Output : " + output);
                    } catch (final Exception e) {
                        e.printStackTrace();
                    }
                    final String[] outputSplit = output.toString().split("'");
                    for (int i = 0; i < outputSplit.length; i++) {
                        switch (i) {
                        case 1:
                            packagename = outputSplit[i];
                            logger.info("Package : " + packagename);
                        break;
                        case 3:
                            mversionId = outputSplit[i];
                            logger.info("Version Code : " + mversionId);
                        break;
                        case 5:
                            versionId = outputSplit[i];
                            logger.info("Version Name : " + versionId);
                        break;
                        }
                    }

希望它会起作用。

他们只是在解析 google Play 商店页面的详细信息。

您可以使用包管理器获取 apk 文件的详细信息:

只需检查以下文档 link:here

 public PackageInfo getPackageArchiveInfo (String archiveFilePath, int flags)