android - WIFI P2P 删除组

标签 android wifi-direct wifip2p

我想从一个设备连接到不同的设备一个接一个。所以我要做的是检查我的设备是否已连接 if(myDevice.status == 0) 如果是,我删除组 manager.removeGroup(channel, new ActionListener().

这里的问题是,在执行此操作几次后,方法 removeGroup() 转到 onFailure() 并出现此错误:断开连接失败。 Reason :2 意思是“忙”。

如何阻止框架忙碌?是否有任何正确的方法来断开两台设备之间的连接,以便毫无问题地开始与另一台设备的新连接?

最佳答案

Wifi P2p 每次创建新组时都会创建一个持久组。所以只是 removeGroup() 是行不通的。您将不得不使用 DeletePersistantGroup 方法(隐藏)。使用反射调用此方法:

    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(manager, channel, netid, null);
                }
            }
        }
    } catch(Exception e) {
        e.printStackTrace();
    }
}

关于android - WIFI P2P 删除组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39331337/

相关文章:

android - 在 android 中处理 ePub 文件

java - Android Java 最小化时获取

android - 更改 Wifi Direct 的 Android 实现

android - 防止 WiFi-direct 在不使用时关闭

android - 防止 RecyclerView 在不创建自定义 ViewGroup 的情况下吞噬触摸事件

java - 构建一个简单的Android应用> Android基本编程> Red Rs和缺少资源标签

android - 使用 HDMI wifi dongle 在 Android 中进行截屏

android - 如何在不共享 android 中的互联网连接(热点)的情况下创建 wifi 网络共享?

c# - 在 Windows 上使用 WiFi Direct Api?

android - 当我作为客户端连接时,为什么客户端列表为空?