You can now create a new persistent group via WifiP2pManager.createGroup(..)
. It will create a new group and make the calling device (A) group owner and can do what you described. The only problem is once you create a group and connect to another device, that other device (B) will remember that specific group. If you try to create a new group in A (say, opening the app a second time) and try to connect from B, it will automatically join the old group and not appear as if it is connected in the new group in A.
EDIT:
There is a way to wipe out all persistent groups. It is a hidden function called deletePersistentGroups
. This will wipe out every single one though, but it seems to be the only reliable way to solve your problem. Call this after you call WifiP2pManager.initialize(..)
, so you can use the 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();
}
}
I'm not quite sure why the netid
goes up to 31, I would assume that that is the maximum number of allowed remembered connections. Code taken from here.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…