Tips: 使用这个方法必须关闭Android Studio的部署优化(Always install with package manager(disable deploy optimizations on Android11 and later)),否者请使用Gralde命令手动编译安装
代码
utils.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| package com.sharpice.test;
import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import java.io.IOException; import java.util.ArrayList; import java.util.Enumeration; import java.util.List;
public class utils { public static List<String> searchClass(Context context, String packageName) throws PackageManager.NameNotFoundException, IOException { List<String> classList = new ArrayList<>();
if (!packageName.endsWith(".")) { packageName += "."; }
ApplicationInfo applicationInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA); String apkPath = applicationInfo.sourceDir; dalvik.system.DexFile df = new dalvik.system.DexFile(apkPath); Enumeration<String> enumeration = df.entries();
while (enumeration.hasMoreElements()) { String className = enumeration.nextElement(); if (className.startsWith(packageName) && !className.contains("$")) { classList.add(className); } }
return classList; } }
|