È ora possibile creare un nuovo gruppo permanente tramite WifiP2pManager.createGroup(..)
. Creerà un nuovo gruppo e renderà il proprietario del gruppo chiamante (A) e può fare ciò che hai descritto. L'unico problema è quando crei un gruppo e ti connetti a un altro dispositivo, quell'altro dispositivo (B) ricorderà quel gruppo specifico. Se provi a creare un nuovo gruppo in A (ad esempio, aprendo l'app una seconda volta) e provi a connetterti da B, si unirà automaticamente al vecchio gruppo e non apparirà come se fosse connesso nel nuovo gruppo in A.
MODIFICA: C'è un modo per cancellare tutti i gruppi persistenti. È una funzione nascosta denominata deletePersistentGroups
. Ciò cancellerà ogni singolo però, ma sembra essere l'unico modo affidabile per risolvere il tuo problema. Chiama questo dopo aver chiamato WifiP2pManager.initialize(..)
, in modo da poter utilizzare il canale.
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();
}
}
io non sono molto sicuro perché il netid
va fino al 31, presumo che questo è il numero massimo di connessioni memorizzate consentite. Codice preso da here.
fonte
2014-10-07 17:58:49
Ora lo è. È possibile che questa risposta sia obsoleta. –
Altro *** ironia *** utilizzato per non persistere, ma ora che è stato risolto, non posso rimuoverlo perché è VERAMENTE persistente. – CrandellWS