Android中获取指定包名下的所有类
通过DexFile这个类就实现Android中获取指定包名下的所有类。
废话不多说,上代码:
/**
* Android中获取指定包名下的所有类
* @param packageName 指定报名 com.xx.xx.xx.adapter
* @param packageCodePath activity.getPackageCodePath();
* @return
*/
List<String> getClassName(String packageName, String packageCodePath){
List<String>classNameList=new ArrayList<>();
try {
DexFile df = new DexFile(packageCodePath);//通过DexFile查找当前的APK中可执行文件
Enumeration<String> enumeration = df.entries();//获取df中的元素 这里包含了所有可执行的类名 该类名包含了包名+类名的方式
while (enumeration.hasMoreElements()) {
String className = enumeration.nextElement();
if (className.contains(packageName)) {
classNameList.add(className);
Log.d(TAG, MessageFormat.format("加载{}",className));
}
}
} catch (IOException e) {
e.printStackTrace();
}
return classNameList;
}
执行后日志
01-03 16:10:03.020 11461-11481/com.xxx.xxx D/ModeAdapterLoader: 加载com.xxx.xxx.xxx.adapter.AdjustAdapter
01-03 16:10:03.020 11461-11481/com.xxx.xxx D/ModeAdapterLoader: 加载com.xxx.xxx.xxx.adapter.RegisterAdapter
01-03 16:10:03.020 11461-11481/com.xxx.xxx D/ModeAdapterLoader: 加载com.xxx.xxx.xxx.adapter.WorkAdapter
01-03 16:10:03.030 11461-11481/com.xxx.xxx D/ModeAdapterLoader: 共加载adapter3个
作者:cripps
出处:https://beanstt.github.io
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。