通过反射调用方法时包含参数

时间:2012-08-31 13:38:32

标签: java android reflection

我找到了以下代码:

try{ 
   Object service  = getSystemService("statusbar");
   Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
   Method expand = statusbarManager.getMethod("expand");
   expand.invoke(service);
 }
 catch(Exception ex){           

 }

它可用于扩展状态栏,但我想要访问的方法不会展开,它的“禁用”和禁用会将int作为参数。可以告诉我如何以这种方式调用方法时包含一个参数。

1 个答案:

答案 0 :(得分:4)

invoke为参数提供额外的参数,因此您可以这样调用它:

Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
Method disable = statusbarManager.getMethod("disable", Integer.TYPE); //takes an int
disable.invoke(service, 2); //calls disable(2)

注意:正如评论中所指出的,这是一个坏主意。