我正在尝试在 Android 平台上在运行时动态加载一个类。该类包含在一个单独的库 JAR 文件中,但与 APK 打包在一起(根据 SDK 中的新库机制)。使用 Class.forname 方法时,我收到一个类未找到异常。我已经看到一些关于 DexClassLoader 方法的讨论,但我找不到一个很好的例子来说明它是如何使用的(以及它是否是最好的方法 - 它似乎比 forname 方法复杂得多!)。
如果有人可以提供有关如何执行此操作的示例代码 fragment ,我将不胜感激。
非常感谢您的帮助。
最佳答案
这是一个动态加载 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 版本时加载类。
关于java - Android:如何从 JAR 文件中动态加载类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7947422/