如何获取 .apk 文件详细信息(如:名称、id、vercode ..etc)存储在 android 设备的外部存储中
Posted
技术标签:
【中文标题】如何获取 .apk 文件详细信息(如:名称、id、vercode ..etc)存储在 android 设备的外部存储中【英文标题】:How to get .apk files details (like: name, id, vercode ..etc) stored in external storage of android device 【发布时间】:2015-04-28 11:59:00 【问题描述】:我怎样才能获得 .apk 文件 详细信息(如:名称、包名、vercode ..etc)存储在目录(如:/storage/emulated/0/downloads)中,即使它们未安装在设备上。
例如,1mobile market 可以将所有 .apk 文件存储在您的设备中并要求您安装它们。
如屏幕截图所示,那些未安装在我的设备上但市场可以加载图标、名称、版本和大小的应用程序。怎么样?!
【问题讨论】:
【参考方案1】:您可以使用包管理器获取 apk 文件的详细信息:
只需查看以下文档链接:here
public PackageInfo getPackageArchiveInfo (String archiveFilePath, int flags)
【讨论】:
准确而简短的回答,非常好。【参考方案2】:实际上 apk 文件是zip archives
,你可以将文件重命名为yourAppName.apk.zip
并使用任何 zip 实用程序(例如 7zip)解压。
androidmanifest.xml
文件和资源将被提取,然后您将找到所有这些信息...
注意:源代码不在包中 - 只是编译后的 .dex 文件(“Dalvik Executable”)
【讨论】:
【参考方案3】:apk 文件实际上只是一个具有不同名称的 zip 存档。将 x.apk
重命名为 x.zip
,其中 x 是文件名,您可以使用任何 zip 工具打开它。这实际上取决于您是否可以在apk文件中找到它的信息。我可以说您可以访问AndroidManifest.xml
文件,其中以相当可读的形式存储了有关应用程序访问权限等的关键信息。
【讨论】:
AndroidManifest.xml
被压缩/加密,不像你说的那样可读【参考方案4】:
您可以使用“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;
它会起作用的。
【讨论】:
【参考方案5】:他们只是在解析 google play 商店页面的详细信息。
【讨论】:
以上是关于如何获取 .apk 文件详细信息(如:名称、id、vercode ..etc)存储在 android 设备的外部存储中的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 7 中使用 iBeacons 获取设备详细信息,如 UUID 或设备名称