2014-02-17 2 views
0

Я пытаюсь получить доступ к PackageManager через отражение. Я могу перечислить методы и найти getApplicationInfo. Я также могу выполнить getApplicationInfo по ссылке, которую я получаю через reflection. getMethods(), но getMethod() с getApplicationInfo throws a no such method exception.Отражение на PackageManager не работает

Method method; 
Method method2; 
method = Class.forName(Context.class.getName()).getDeclaredMethod(
        "getPackageManager"); 
Object manager; 
manager = method.invoke(ctx); 

// this works 
ApplicationInfo testInfo = ((PackageManager) manager) 
    .getApplicationInfo("com.package.class", 0); 

// throws nosuchmethodexception 
((PackageManager) manager).getClass().getMethod("getApplicationInfo"); 

ответ

3

определение см getMethod() метод

public Method getDeclaredMethod(String name,Class...<?> parameterTypes); 

Таким образом, вы должны передать class экземпляр типов параметров.

Заменить

((PackageManager) manager).getClass().getMethod("getApplicationInfo"); 

с

((PackageManager) manager).getClass().getMethod("getApplicationInfo",int.class); 
Смежные вопросы