Android 获取apk文件图标、版本、名称
对于尚未安装的软件包,是否有办法获取应用程序名称、应用程序版本和应用程序图标?(对于SD卡上的某些apk文件)我可以使用Android 获取apk文件图标、版本、名称,android,Android,对于尚未安装的软件包,是否有办法获取应用程序名称、应用程序版本和应用程序图标?(对于SD卡上的某些apk文件)我可以使用getPackageGearchiveInfo(archiveFilePath,flags)和getApplicationInfo(ApplicationInfo)获取apk图标、版本、名称。 使用: 示例图标: Drawable icon = packageInfo.applicationInfo.loadIcon(getActivity().getPackageManage
getPackageGearchiveInfo(archiveFilePath,flags)
和getApplicationInfo(ApplicationInfo)获取apk图标、版本、名称。
使用:
示例图标:
Drawable icon = packageInfo.applicationInfo.loadIcon(getActivity().getPackageManager());
我试过:
PackageInfo info = getPackageManager().getPackageArchiveInfo(fullPath, 0);
ApplicationInfo appinfo = info.applicationInfo;
label = getPackageManager().getApplicationLabel(appinfo).toString();
img = getPackageManager().getApplicationIcon(info.packageName);
但是如果没有安装apk,此代码将无法工作。正如您可能已经发现的那样,PackageManager仅在安装了应用程序后才对您有用 要解决在不安装应用程序的情况下获取信息的问题,请使用APK提取器,请参阅: 这个项目是一个开发公共可用解析器的尝试 它可以解析Android的二进制XML。AAPT(安卓资产包装) 工具)以谷歌自己的专有二进制编码/解码XML资源 XML格式。人们普遍认为这是一种通用的WBXML格式 任何支持WBXML的解析器都可以解析它。但事实并非如此 如果您打算探索Android的二进制XML,我的代码库可以 帮助您启动并在其上构建服务 版本1.0-能够解析Android清单、XML布局等。 以及将DEX/ODEX转换为类,该类可以由任何用户打开 反编译 他的博客在这里:
我只是花了比我承认的更多的时间来寻找这个问题的解决方案。。找到了!:):) 在进入此参考之后: 我发现了从尚未安装的.apk文件中获取图标和名称(即标签)的诀窍 我希望在这方面帮助他人不会太迟:
String APKFilePath = "mnt/sdcard/myapkfile.apk"; //For example...
PackageManager pm = getPackageManager();
PackageInfo pi = pm.getPackageArchiveInfo(APKFilePath, 0);
// the secret are these two lines....
pi.applicationInfo.sourceDir = APKFilePath;
pi.applicationInfo.publicSourceDir = APKFilePath;
//
Drawable APKicon = pi.applicationInfo.loadIcon(pm);
String AppName = (String)pi.applicationInfo.loadLabel(pm);
经过光照测试,它似乎起作用了。。。唷。我试过了,但packageInfo总是空的。我缺少任何权限?请在三星Galaxy Tab 8.9 Android 3.2版为我工作。packageInfo不为null,如果尚未安装应用程序,则intent为null。对于未安装的应用程序不起作用:(,仅返回默认的应用程序图标。这不应该是一个可接受的答案,因为它不能回答问题。@POMATu请标记Tam的答案,因为可接受的答案必须是market作为正确答案:D帮助很大,谢谢:)版本如何?如何获得它?@Shirisherwade它已经在“pi”中了变量。版本代码:,版本名称:是否可以找到apk的目的过滤器?这两条保密线使
APKFilePath
处于打开状态。如何关闭该文件?您是否能够找到验证号,如果是,请发布您的答案。
PackageInfo info = getPackageManager().getPackageArchiveInfo(fullPath, 0);
ApplicationInfo appinfo = info.applicationInfo;
label = getPackageManager().getApplicationLabel(appinfo).toString();
img = getPackageManager().getApplicationIcon(info.packageName);
String APKFilePath = "mnt/sdcard/myapkfile.apk"; //For example...
PackageManager pm = getPackageManager();
PackageInfo pi = pm.getPackageArchiveInfo(APKFilePath, 0);
// the secret are these two lines....
pi.applicationInfo.sourceDir = APKFilePath;
pi.applicationInfo.publicSourceDir = APKFilePath;
//
Drawable APKicon = pi.applicationInfo.loadIcon(pm);
String AppName = (String)pi.applicationInfo.loadLabel(pm);