4

我已经使用 WifiP2pManager “createGroup()” 方法成功设置了一个 Android 点对点 Wifi-Direct 组。我的 Android (4.2.2) 设备被配置为组所有者。现在我需要设置 SSID 和密码,以便与我想连接的旧 wifi 对等设备进行临时通信。

Android 似乎设置了默认的 SSID 和密码短语,我可以使用 WifiP2pGroup “getNetworkname()”和“getPassphrase()”方法读取这些值。我可以使用这些值,但我想在我的代码中动态设置这些值,以匹配我想连接的旧 wifi 设备的值。

如果您查看 WifiP2pGroup 的 android 代码,请参见:

http://android.googlesource.com/platform/frameworks/base/+/cd92588/wifi/java/android/net/wifi/p2p/WifiP2pGroup.java

你可以看到公共方法“setNetworkName()”和“setPassphrase()”确实存在。但是,如果我尝试在我的 Android 设备上的 java 代码中引用这些方法,我会收到错误消息:

“未定义 WifiP2pGroup 类型的方法 setNetworkName(String)”,以及

“ WifiP2pGroup 类型的方法 setPassphrase(String) 未定义”。

我的问题是:如何将 Android 4.2.2 操作系统中存在的这些隐藏方法作为 WifiP2pGroup 的公共方法访问?

除了使用这些方法之外,还有其他方法可以设置 SSID 和密码吗?

另外,他们为什么选择隐藏这些方法,您知道它们是否会在未来的 Android 版本中提供吗?如果是这样,哪个版本?

感谢您提供的任何帮助。

4

2 回答 2

3

你可以使用反射java。

让我们假设 WifiP2pGroup 将您当前的对象分组。

方法 setPassPhraseMethod=group.getClass().getMethod("setPassphrase", new Class[ {String.class}); 现在您调用该方法:

setPassPhraseMethod.invoke(group, "yourNewPassPhase");

于 2014-10-16T14:46:28.947 回答
1

您只能使用WifiP2pManager http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html中公开的 API

您所指的 API 是用于重新创建持久组的内部 API。

于 2014-01-19T18:56:56.147 回答