如何在 android 上创建非持久 WiFi 直连组?

Posted

技术标签:

【中文标题】如何在 android 上创建非持久 WiFi 直连组?【英文标题】:How to create a non-persistent WiFi direct group on android? 【发布时间】:2015-02-14 17:53:45 【问题描述】:

第一次调用WifiP2pManager.connect 时,目标设备上会出现一个确认对话框以接受连接。

在随后的连接中不再要求此确认,该组将保留在设备上。

我不希望这种行为,因为我希望启动连接的设备始终是组所有者。群组持久化后,群组所有者无法更改。

有没有办法创建一个临时组而不是一个持久组?或者我可以在完成后“忘记”持久组吗?

【问题讨论】:

【参考方案1】:

WifiP2pManager.removeGroup 没有做我想做的事。当您重新连接到同一设备时,它仍会记住该组。

但我发现有一个隐藏方法 WifiP2pManager.deletePersistentGroup 现在我用反射调用它。这不是很好,但现在需要这样做。

private void removeAndDeleteGroup(WifiP2pGroup wifiP2pGroup) 
    wifiP2PManager.removeGroup(wifiChannel, new SimpleLoggingActionListener("removeGroup"));
    try 
        Method getNetworkId = WifiP2pGroup.class.getMethod("getNetworkId");
        Integer networkId = (Integer) getNetworkId.invoke(wifiP2pGroup);
        Method deletePersistentGroup = WifiP2pManager.class.getMethod("deletePersistentGroup",
                WifiP2pManager.Channel.class, Integer.class, WifiP2pManager.ActionListener.class);
        deletePersistentGroup.invoke(wifiP2PManager, wifiChannel, networkId, new SimpleLoggingActionListener("deletePersistentGroup"));
     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);
    

【讨论】:

试过这是正确的想法,但没有奏效??虽然***.com/a/26242221/1815624 确实...【参考方案2】:

Wifip2pManager 中的 removeGroup 不能满足您的需要吗? http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html#removeGroup(android.net.wifi.p2p.WifiP2pManager.Channel, android.net.wifi.p2p.WifiP2pManager.ActionListener)

我认为当你完成连接后调用它会导致它每次都要求重新连接。

【讨论】:

No removeGroup 不会删除组 irony

以上是关于如何在 android 上创建非持久 WiFi 直连组?的主要内容,如果未能解决你的问题,请参考以下文章

数据如何在 android wifi 直接连接中通过

如何在Android上获取wifi硬件信息

如何通过 Android 设备创建的 WiFi 直接网络在 iOS 中使用 ZeroMQ 发送/接收消息

如何以编程方式在 Android 中创建和读取 WEP/EAP WiFi 配置?

wifi直接android应用创建

在Android上检测wifi IP地址?