WifiP2pManager createGroup 和 removeGroup 因忙状态而失败
Posted
技术标签:
【中文标题】WifiP2pManager createGroup 和 removeGroup 因忙状态而失败【英文标题】:WifiP2pManager createGroup and removeGroup are failing with BUSY state 【发布时间】:2015-05-23 21:04:39 【问题描述】:在我的两台设备上,当我尝试使用WifiP2pManager
的createGroup
或removeGroup
时,我得到onFailure
回调,其中2(忙)为reason
。
我尝试使用此处给出的建议WifiP2pManager return BUSY state on CreateGroup(在创建新组之前删除组),但这没有帮助,因为我总是收到onFailure
在removeGroup
回调。
我测试过的设备:LG Optimus G (CM 12.1 - android 5.1)、Gigabyte GSmart Guru G1 (stock Android 4.2)。
更新
代码是:
manager.removeGroup(channel, new WifiP2pManager.ActionListener()
@Override
public void onSuccess()
Debug.d();
manager.createGroup(channel, new WifiP2pManager.ActionListener()
@Override
public void onSuccess()
Debug.d();
@Override
public void onFailure(int reason)
Debug.d("" + reason);
);
@Override
public void onFailure(int reason)
Debug.d("" + reason);
);
【问题讨论】:
您是否还从设置中检查了您的 Wifi 是否已启用? 我不明白您为什么要在 removeGroup 期间尝试创建组?您能解释一下...您是否打算在删除其他组时创建组? 【参考方案1】:我收到此错误是因为我在组不存在时尝试使用removeGroup
。解决方案是在删除或创建新组之前检查当前组是否存在。
这是工作代码(我使用 Retrolambda):
manager.requestGroupInfo(channel, group ->
if (group != null)
Debug.d("group != null");
manager.removeGroup(channel, new WifiP2pManager.ActionListener()
@Override
public void onSuccess()
Debug.d();
manager.createGroup(channel, new WifiP2pManager.ActionListener()
@Override
public void onSuccess()
Debug.d();
@Override
public void onFailure(int reason)
Debug.d("" + reason);
);
@Override
public void onFailure(int reason)
Debug.d("" + reason);
);
else
manager.createGroup(channel, new WifiP2pManager.ActionListener()
@Override
public void onSuccess()
Debug.d();
@Override
public void onFailure(int reason)
Debug.d("" + reason);
);
);
【讨论】:
【参考方案2】:正如@Dr.Jukka 评论的那样:关闭 wifi 也会导致 BUSY 状态。至少在我的情况下是这样。
【讨论】:
以上是关于WifiP2pManager createGroup 和 removeGroup 因忙状态而失败的主要内容,如果未能解决你的问题,请参考以下文章
WifiP2pManager.requestPeers() 在 onPeersAvailable() 中不断返回旧对等点
WifiP2pManager 在 CreateGroup 上返回 BUSY 状态