Sto creando un'app, che può elencare tutti i wifi disponibili in un ListView. Se seleziono uno dei wifi nell'elenco, che è stato memorizzato nella cache prima in List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
, dovrebbe collegarsi ad esso. Se l'elenco WifiConfiguration
non contiene il wifi selezionato, non succede nulla. Il mio problema è che a volte seleziono un wifi dalla lista (che so per certo è nella lista WifiConfiguration
), ma non si connette ad esso. Invece si ricollega al wifi precedentemente connesso. Dopo alcuni tentativi (selezionando ancora e ancora lo stesso wifi) si connette finalmente ad esso. Questo non succede sempre, solo qualche volta. Quale può essere il problema? Ecco il mio frammento di codice:Connessione a uno specifico wifi a volte non riesce su Android
// Go through all the cached wifis and check if the selected GoPro was cached before
for (WifiConfiguration config : configurations) {
// If it was cached connect to it and that's all
if (config.SSID != null && config.SSID.equals("\"" + mDrawerListView.getAdapter().getItem(position) + "\"")) {
// Log
Log.i("onReceive", "Connecting to: " + config.SSID);
mWifiManager.disconnect();
mWifiManager.enableNetwork(config.networkId, true);
mWifiManager.reconnect();
break;
}
}
Grazie per la breve spiegazione Daniel! Ha davvero senso come lo hai spiegato! Sono lontano dalla mia macchina su cui sto facendo lo sviluppo, ma domani sarà la prima cosa da provare! – Silex
Ho appena testato la tua soluzione e funziona perfettamente, grazie! – Silex
Forse è importante sapere che le cose sono cambiate a partire da Android 6: https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-network Come capisco, sarà possibile disabilitare la rete solo se questa rete è già stata utilizzata dalla stessa applicazione – soey