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

标签 java android classloader

我正在尝试在 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/

相关文章:

java - 使用 Kotlin 创建自定义 Dagger 2 范围

java - 带有版权的Android Studio应用程序平板图标使用

android - 如何在以下链接中设置搜索栏拇指位置

java.lang.reflect.InitationTargetException,由: java. lang.NoClassDefFoundError引起:com/fasterxml/jackson/databind/ObjectMapper

java - 方法内类加载器的上下文

java - 使用 Plastic 框架进行代码生成时出现棘手的 ClassCastException

java - 如何在 Eclipse 中打印动态 Web 项目中的调试消息

java - 从另一个 JAR 文件中解压/提取资源

java - 尝试跟踪使用 CheckBox 的标记项目?

java - Android Studio : HorizontalView