Java 奇怪的反射错误

Java 奇怪的反射错误,java,android,reflection,wireless,peer,Java,Android,Reflection,Wireless,Peer,我已经试着解决这个问题好几个星期了,似乎再也绕不开了。我有一个Android应用程序,在创建点对点网络之前需要更改设备的名称 因为该方法隐藏在Android的SDK中,所以我使用反射。我试图反映的方法位于第1305行: 下面是我尝试反射的代码: public class HostStagingActivity extends Activity { WifiP2pManager.Channel myChannel; //This channel is created and passed to s

我已经试着解决这个问题好几个星期了,似乎再也绕不开了。我有一个Android应用程序,在创建点对点网络之前需要更改设备的名称

因为该方法隐藏在Android的SDK中,所以我使用反射。我试图反映的方法位于第1305行:

下面是我尝试反射的代码:

public class HostStagingActivity extends Activity
{
WifiP2pManager.Channel myChannel; //This channel is created and passed to system services in order for WIFI_P2P to work
WifiP2pManager myManager; //This manager is declared to get the required channel object
...

但是,这会导致运行时错误:

Caused by: java.lang.IllegalArgumentException: expected receiver of type android.net.wifi.p2p.WifiP2pManager, but got android.net.wifi.p2p.WifiP2pManager$Channel
            at java.lang.reflect.Method.invokeNative(Native Method)
当我在代码中明确地向该方法传递WifiP2pManager.Channel类时,为什么该方法需要WifiP2pManager对象?只是为了好玩,当我把它期望的参数传递给它时,它声称该方法期望三个参数,而我只给了它两个


有更多反思经验的人能帮我吗?

什么是
myChannel
?此外,我不建议您访问隐藏的方法,如果它们是隐藏的,通常是出于一个很好的原因。myChannel是在该活动的onCreate()中实例化的WifiP2pManager.Channel对象。我知道反射隐藏方法会导致问题,但在这种情况下,我无法要求用户从应用程序中更改其设备名称,需要手动更改。而
myManager
我认为是
WifiP2pManager
。如果是这样,就没有理由出现这种异常,尽管我怀疑您对代码的假设是错误的。你能在这里发布包含这两个变量定义的真实代码吗?编辑问题代码,在各自的范围内包含相关变量的实例化。
Caused by: java.lang.IllegalArgumentException: expected receiver of type android.net.wifi.p2p.WifiP2pManager, but got android.net.wifi.p2p.WifiP2pManager$Channel
            at java.lang.reflect.Method.invokeNative(Native Method)