我正在尝试在Android平台上动态加载一个类。该类包含在单独的库JAR文件中,但与APK一起打包(根据SDK中的新库机制)。使用Class.forname方法时,我收到了一个未找到的类异常。我已经看过围绕DexClassLoader方法的一些讨论,但是我找不到一个如何使用它的好例子(以及它是否是最好的方法 - 它似乎比forname方法复杂得多!)。 / p>
如果有人可以提供一些代码片段,我将非常感激。
非常感谢你的帮助。
答案 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版本时加载类。