忘记旧的WiFi直连连接

nik*_*yas 6 android android-wifi wifi-direct

有没有办法忘记旧的WiFi直连(代码中)?我需要这样才能改变谁成为集团所有者.我正在设置groupOwnerIntent = 15但尚未成为Group owner.

Nia*_*ros 5

如果您只想断开现有WiFiP2p连接,则只需调用WiFiP2pManager#removeGroup. 设备 GO 还是对等点并不重要。

如果您正在谈论忘记持久组 - 您也可以删除它们。但这只能通过反思来实现。而且无论是设备GO还是peer。

    manager.removeGroup(channel, new WifiP2pManager.ActionListener() {
        @Override
        public void onSuccess() {
            Log.d(TAG, "removeGroup success");
            deletePersistentGroup(group);
        }

        @Override
        public void onFailure(int reason) {
            Log.d(TAG, "removeGroup fail: " + reason);
        }
    });
Run Code Online (Sandbox Code Playgroud)

哪里manager有 的实例WiFip2pManager。并且deletePersistanteGroup(WiFiP2pGroup group)是:

    private void deletePersistentGroup(WifiP2pGroup wifiP2pGroup) {
        try {

            Method getNetworkId = WifiP2pGroup.class.getMethod("getNetworkId");
            Integer networkId = (Integer) getNetworkId.invoke(wifiP2pGroup);
            Method deletePersistentGroup = WifiP2pManager.class.getMethod("deletePersistentGroup",
                    WifiP2pManager.Channel.class, int.class, WifiP2pManager.ActionListener.class);
            deletePersistentGroup.invoke(manager, channel, networkId, new WifiP2pManager.ActionListener() {
                @Override
                public void onSuccess() {
                    Log.e(TAG, "deletePersistentGroup onSuccess");
                }

                @Override
                public void onFailure(int reason) {
                    Log.e(TAG, "deletePersistentGroup failure: " + reason);
                }
            });
        } catch (NoSuchMethodException e) {
            Log.e("WIFI", "Could not delete persistent group", e);
        } catch (InvocationTargetException e) {
            Log.e("WIFI", "Could not delete persistent group", e);
        } catch (IllegalAccessException e) {
            Log.e("WIFI", "Could not delete persistent group", e);
        }
    }
Run Code Online (Sandbox Code Playgroud)

UPD

要成为 GO,您应该WiFiP2pManager#createGroup()在向同行发送邀请之前致电。