2013-04-17 6 views
7

Sto tentando di rimuovere la mia rete wifi in modo programmatico - tuttavia non riesco a farlo rimuovere/dimenticare la connessione wifi attualmente connessa. Questo dovrebbe essere un compito piuttosto semplice, quindi non sono sicuro di quello che sto facendo male.Android - Impossibile rimuovere la rete Wifi a livello di codice - Il metodo removeNetwork (int) nel tipo WifiManager non è applicabile per gli argomenti (stringa)

Sto utilizzando il seguente post StackOverflow come esempio:

How to forget a wireless network in android programmatically?

 public class KillTimer extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.killtimer); 
     WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); 
     wifiManager.getConnectionInfo().getSSID() 
     wifiManager.getConnectionInfo().getNetoworkId(); 
     wifiManager.removeNetwork(wifiConfig.networkId); 
     wifiManager.saveConfiguration(); 

    }} 

risposta

8

removeNetwork() richiede solo parametri interi. Lo networkSSID è un valore stringa. Questa è la causa dell'errore. Vedo che stai usando SSID che è una stringa. Devi dare l'ID di rete che è intero. Puoi provare getConnectionInfo().getSSID() e confrontarlo con il tuo ssid, se sono uguali puoi provare ad ottenere getConnectionInfo().getNetoworkId() che dovrebbe dare l'id di rete della rete connessa, che puoi usare per rimuovereNetwork.

Prova questo:

public class KillTimer extends Activity { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.killtimer); 
      WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); 
      int networkId = wifiManager.getConnectionInfo().getNetworkId(); 
      wifiManager.removeNetwork(networkId); 
      wifiManager.saveConfiguration(); 
     }} 
+0

Io in realtà non hanno bisogno di codificare una specifica SSID da rimuovere - Voglio semplicemente rimuovere qualsiasi SSID è attualmente collegato. Ho aggiornato il mio codice sorgente qui sopra (ho omesso la sezione che hai citato creando per confrontarli - dal momento che voglio semplicemente disconnettere qualsiasi dispositivo connesso) Puoi dare un'occhiata e vedere se la mia attuale implementazione ti sembra corretta? –

+0

[Apprezzo davvero il tuo aiuto con questo!] –

+0

Hai avuto la maggior parte di esso giusto. Prova il codice nella risposta modificata – jaga

2
private void RemoveWifiNetworks() { 

    WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); 

    List<WifiConfiguration> list = wifiManager.getConfiguredNetworks(); 
    for (WifiConfiguration i : list) { 
     //int networkId = wifiManager.getConnectionInfo().getNetworkId(); 
     wifiManager.removeNetwork(i.networkId); 
     wifiManager.saveConfiguration(); 
    } 

} 
Problemi correlati