5

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

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

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

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

4

2 回答 2

6

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);
    }
}
于 2015-02-28T12:49:05.923 回答
0

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)

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

于 2015-02-27T20:24:23.723 回答