WifiP2pManager createGroup и removeGroup не работают с состоянием BUSY

На обоих моих устройствах, когда я пытаюсь использовать createGroup или removeGroup WifiP2pManager, я получаю обратный вызов onFailure с 2 (BUSY) как reason.

Я пытался использовать приведенное здесь предложение WifiP2pManager возвращает состояние BUSY в CreateGroup ( удаление группы перед созданием новой), но это не помогло, потому что я всегда получаю обратный вызов onFailure в removeGroup.

Устройства, на которых я тестировал: LG Optimus G (CM 12.1 — Android 5.1), Gigabyte GSmart Guru G1 (стандартный 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);
        }
    });

person s0nerik    schedule 23.05.2015    source источник
comment
Вы также проверили, что ваш Wi-Fi включен в настройках?   -  person Dr.Jukka    schedule 25.05.2015
comment
Я не понимаю, почему вы пытаетесь создать группу во время удаления группы? Можете ли вы объяснить это... Вы собираетесь создать группу, когда какая-то другая группа была удалена?   -  person unrealsoul007    schedule 25.05.2015


Ответы (2)


Я получал эту ошибку, потому что пытался использовать 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);
                }
            });
        }
    });
person s0nerik    schedule 23.05.2015

Как прокомментировал @Dr.Jukka: Отключение Wi-Fi также может вызвать состояние BUSY. Так было по крайней мере в моем случае.

person crgarridos    schedule 23.02.2018