网上找的大都是已安装应用的判断方法,那么如何判断未安装的apk是否是桌面应用呢?
直接上代码:
private boolean isLauncherApp(String dexPath) {
boolean isHomeCategory = false;
try {
Class classPackageParser = Class.forName("android.content.pm.PackageParser");
Object objectPackageParser = classPackageParser.newInstance();
File sourceFile = new File(dexPath);
Method method = classPackageParser.getDeclaredMethod("parsePackage", File.class, int.class);
method.setAccessible(true);
Object objectPackage = method.invoke(objectPackageParser, sourceFile, 0);
Field fieldActivities = objectPackage.getClass().getDeclaredField("activities");
fieldActivities.setAccessible(true);
ArrayList objectActivities = (ArrayList) fieldActivities.get(objectPackage);
p1: for (int i =