android - 我可以在 Wi-Fi Direct 中更改永久组中的组所有者吗?

标签 android android-wifi wifi-direct wifip2p

通过 Wi-Fi Direct 创建组时,我知道我可以创建一个持久组。

我的问题是:我可以创建一个永久组,但每次都更改组所有者(即,每轮组所有者将成为组中的设备之一)。

另外,创建持久化组时,只要求第一次接受连接,对吧?

最佳答案

您现在可以通过 WifiP2pManager.createGroup(..) 创建一个新的永久组。它将创建一个新组并使调用设备 (A) 成为组所有者,并且可以执行您描述的操作。唯一的问题是一旦您创建了一个组并连接到另一台设备,另一台设备 (B) 就会记住该特定组。如果您尝试在 A 中创建一个新群组(例如,再次打开应用程序)并尝试从 B 连接,它会自动加入旧群组,而不是像在 A 的新群组中连接一样。

编辑: 有一种方法可以清除所有持久性组。这是一个名为 deletePersistentGroups 的隐藏函数。虽然这会消灭每一个,但这似乎是解决问题的唯一可靠方法。在你调用 WifiP2pManager.initialize(..) 之后调用它,这样你就可以使用 channel 了。

private void deletePersistentGroups(){
    try {
        Method[] methods = WifiP2pManager.class.getMethods();
        for (int i = 0; i < methods.length; i++) {
            if (methods[i].getName().equals("deletePersistentGroup")) {
                // Delete any persistent group
                for (int netid = 0; netid < 32; netid++) {
                    methods[i].invoke(wifiP2pManager, mChannel, netid, null);
                }
            }
        }
    } catch(Exception e) {
        e.printStackTrace();
    }
}

我不太确定为什么 netid 会上升到 31,我会假设这是允许的最大连接数。代码取自 here .

关于android - 我可以在 Wi-Fi Direct 中更改永久组中的组所有者吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15152817/

相关文章:

android - ListView 仅在附加 HierarchyViewer 时出现

android - 来自 Android wifi.getScanResults() 的旧结果

android - 我可以假设大多数安卓设备都有 wifi direct 吗?

Android 无线直连 : How to send data from Group Owner to the clients?

android - 无法从 Play Store Production Area 停用 Android 分阶段发布应用程序

android - Gradle 构建错误 : SAXParseException

android - 对于未 Root 的手机,完全没有 USB 电缆的无线 Adb

android - Robolectric:wifi 启动扫描的启动测试失败

android - 在android中更改Wifi Direct名称

java - webview 没有命中服务器套接字代理