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

Java 通过反射调用方法时包含参数,java,android,reflection,Java,Android,Reflection,我找到了以下代码: try{ Object service = getSystemService("statusbar"); Class<?> statusbarManager = Class.forName("android.app.StatusBarManager"); Method expand = statusbarManager.getMethod("expand"); expand.invoke(service); } catch(Exce

我找到了以下代码:

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

 }
试试{
对象服务=getSystemService(“状态栏”);
Class statusbarManager=Class.forName(“android.app.statusbarManager”);
方法expand=statusbarManager.getMethod(“expand”);
expand.invoke(服务);
}
捕获(例外情况除外){
}

它用于扩展状态栏,但我想访问的方法不是expand,它的“disable”和disable将int作为参数。有人能告诉我在以这种方式调用方法时如何包含param吗

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)
Class statusbarManager=Class.forName(“android.app.statusbarManager”);
方法disable=statusbarManager.getMethod(“disable”,Integer.TYPE)//取整数
禁用.invoke(服务,2)//呼叫禁用(2)

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

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)
Class statusbarManager=Class.forName(“android.app.statusbarManager”);
方法disable=statusbarManager.getMethod(“disable”,Integer.TYPE)//取整数
禁用.invoke(服务,2)//呼叫禁用(2)

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

你想做什么?隐藏状态栏?请不要这样做。无法保证该代码能在任何现有的Android设备(因为设备制造商可能会更改其实现)或任何未来的Android设备(因为谷歌可能会更改其实现或更好地保护此操作)上运行。我正在与坚持我们能够在信息亭模式下运行Thero应用程序的客户合作。。他们不会接受否定的回答,因此我们正在设法阻止他们的客户访问系统UI菜单栏(即主页、主页、设置)在运行4.0.3的三星tab2上,我知道这是一个糟糕的ide,几乎不可能实现,但客户机仍然不会accept@erik我建议你问一个新问题来解释你的确切目标,也许有人会不假思索地想出另一种实现目标的方法。你想做什么?隐藏状态栏?请不要这样做。无法保证该代码能在任何现有的Android设备(因为设备制造商可能会更改其实现)或任何未来的Android设备(因为谷歌可能会更改其实现或更好地保护此操作)上运行。我正在与坚持我们能够在信息亭模式下运行Thero应用程序的客户合作。。他们不会接受否定的回答,因此我们正在设法阻止他们的客户访问系统UI菜单栏(即主页、主页、设置)在运行4.0.3的三星tab2上,我知道这是一个糟糕的ide,几乎不可能实现,但客户机仍然不会accept@erik我建议你问一个新问题来解释你的确切目标,也许有人会不假思索地想出另一种实现目标的方法。