Android:如何从JAR文件动态加载类?

时间:2011-10-30 19:57:33

标签: java android classloader

我正在尝试在Android平台上动态加载一个类。该类包含在单独的库JAR文件中,但与APK一起打包(根据SDK中的新库机制)。使用Class.forname方法时,我收到了一个未找到的类异常。我已经看过围绕DexClassLoader方法的一些讨论,但是我找不到一个如何使用它的好例子(以及它是否是最好的方法 - 它似乎比forname方法复杂得多!)。 / p>

如果有人可以提供一些代码片段,我将非常感激。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:4)

以下是动态加载DevicePolicyManager类的示例。

Class myClass =                                                                        
  ClassLoader.getSystemClassLoader().loadClass("android.app.admin.DevicePolicyManager")

Object DPMInstance = myClass.newInstance();                                            

Method myMethod = myClass.getMethod("setPasswordQuality",                              
                                    new Class[] { ComponentName.class,                 
                                                  int.class });                        
myMethod.invoke(DPMInstance,                                                           
                new Object[] { myComponentName,                                        
                               PASSWORD_QUALITY_NUMERIC }); 

这很有用,因此您可以选择仅在设备运行足够高的SDK版本时加载类。