Android系统,动态找出一个包下所有的类

最近在写一个android应用,由于针对不同机型功能很不同,为了隔离变化,希望将各项功能插件化,通过编译开关来控制不同版本的功能,而不是在代码中通过逻辑来判断。

我想了一个办法,用表驱动的方法,结合插件类的静态代码块自注册。但这就需要找到固定包下的所有类,然后主动初始化这些类,执行静态代码块。下面是运行时找出一个包下所有类的方法:

   private static String[] getC<span style="font-size:18px;">lasses</span>FromPackage(Context context<span style="font-size:18px;">,String packageName</span>) {
ArrayList<String> classes = new ArrayList<String>();
try {
DexFile df = new DexFile(context.getPackageCodePath());
Enumeration<String> entries = df.entries();
while (entries.hasMoreElements()) {
String className = (String) entries.nextElement();
if (className.contains(packageName)) {
classes.add(className);
}
}
} catch (IOException e) {
e.printStackTrace();
} return classes.toArray(new String[]{});
}
上一篇:django基础 -- 10.form , ModelForm ,modelformset


下一篇:Mongodb 存储日志信息