Android: Как динамически загружать классы из файла JAR? - PullRequest
4 голосов
/ 30 октября 2011

Я пытаюсь динамически загрузить класс во время выполнения на платформе Android. Класс содержится в отдельном JAR-файле библиотеки, но упакован с APK (согласно новому библиотечному механизму в SDK). При использовании метода Class.forname я получил исключение для класса not found. Я видел некоторое обсуждение метода DexClassLoader, но я не могу найти хороший пример того, как он используется (и является ли это наилучшим способом - это кажется намного более сложным, чем подход forname!).

Буду очень признателен, если кто-нибудь предоставит примерный фрагмент кода, как это сделать.

Большое спасибо за вашу помощь.

1 Ответ

4 голосов
/ 31 октября 2011

Вот пример для динамической загрузки класса 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...