我试图使用下面的代码直接阻止wifi中的对等点发现。
public void StopPeerDiscovery(){
manager.stopPeerDiscovery(channel, new ActionListener() {
@Override
public void onSuccess() {
Log.d(WiFiDirectActivity.TAG,"Stopped Peer discovery");
}
@Override
public void onFailure(int i) {
Log.d(WiFiDirectActivity.TAG,"Not Stopped Peer discovery");
}
});
}
我能够在日志中看到成功消息(停止对等点发现)。但其他设备仍然能够在同行发现中查看它。 我在这里做错了吗?请指教。 感谢
答案 0 :(得分:6)
这不是问题。实际上你解释了这个onSuccess
错了。此onSuccess
并未告诉您对等方发现已停止,而是表示您的请求已成功发送到负责上述调用的硬件/框架,它将异步停止发现并让您知道(如前所述) )。同样,它的失败只是告诉你的调用没有成功到达框架。
您需要为WIFI_P2P_DISCOVERY_CHANGED_ACTION意图注册BroadcastReceiver。正如您可以在文档中看到的那样,额外的EXTRA_DISCOVERY_STATE可以让您知道对等发现的发现是否已停止。
if (WifiP2pManager.WIFI_P2P_DISCOVERY_CHANGED_ACTION.equals(intent.getAction()))
{
int state = intent.getIntExtra(WifiP2pManager.EXTRA_DISCOVERY_STATE, 10000);
if (state == WifiP2pManager.WIFI_P2P_DISCOVERY_STARTED)
{
// Wifi P2P discovery started.
}
else
{
// Wifi P2P discovery stopped.
// Do what you want to do when discovery stopped
}
}