2

当我尝试使用WifiP2pManager's createGroup或使用 2 (BUSY) asremoveGroup获得回调时,在我的两个设备上。onFailurereason

我尝试使用此处给出的建议WifiP2pManager 在 CreateGroup 上返回 BUSY 状态(在创建新组之前删除组),但这没有帮助,因为我总是onFailureremoveGroup.

我测试过的设备: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);
        }
    });
4

2 回答 2

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);
                }
            });
        }
    });
于 2015-05-23T22:43:02.963 回答
0

正如@Dr.Jukka 评论的那样:关闭 wifi 也会导致 BUSY 状态。至少在我的情况下是这样。

于 2018-02-23T16:53:45.837 回答