Możesz teraz utworzyć nową grupę trwałą przez WifiP2pManager.createGroup(..)
. Utworzy on nową grupę i utworzy właściciela grupy urządzeń wywołujących (A) i może zrobić to, co opisałeś. Jedyny problem polega na tym, że gdy utworzysz grupę i połączysz się z innym urządzeniem, to inne urządzenie (B) zapamięta tę konkretną grupę. Jeśli spróbujesz utworzyć nową grupę w A (powiedzmy, otwierając aplikację po raz drugi) i spróbujesz połączyć się z B, automatycznie przyłączy się do starej grupy i nie pojawi się tak, jakby była połączona w nowej grupie w A.
EDYCJA: Istnieje sposób na usunięcie wszystkich trwałych grup. Jest to ukryta funkcja o nazwie deletePersistentGroups
. To jednak wymazuje każdą z nich, ale wydaje się, że jest to jedyny niezawodny sposób rozwiązania problemu. Zadzwoń do tego pod numerem WifiP2pManager.initialize(..)
, aby móc korzystać z kanału.
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();
}
}
Nie jestem pewien, dlaczego netid
idzie w górę do 31, Przypuszczam, że jest to maksymalna liczba dozwolonych połączeń zapamiętane. Kod pobrany z here.
Teraz jest. Możliwe, że ta odpowiedź jest nieaktualna. –
Więcej *** ironia *** nie była trwała, ale teraz, gdy została naprawiona, nie mogę jej usunąć, ponieważ jest ona NAPRAWDĘ trwała. – CrandellWS