2013-04-17 6 views
7

Próbuję usunąć moją sieć WiFi programowo - jednak nie mogę tego usunąć./zapomnieć o aktualnie podłączonym połączeniu Wi-Fi. To powinno być dość proste zadanie - więc nie jestem pewien, co dokładnie robię źle.Android - Cant Usuń Wifi Network Programowo - Metoda removeNetwork (int) w typie WifiManager nie ma zastosowania do argumentów (String)

mi stosując następującą StackOverflow słupek jak np

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(); 

    }} 

Odpowiedz

8

removeNetwork() zajmuje tylko parametry całkowite. networkSSID jest wartością ciągu. To jest przyczyna błędu. Widzę, że używasz SSID, który jest łańcuchem. Musisz podać identyfikator sieci, który jest liczbą całkowitą. Możesz spróbować getConnectionInfo().getSSID() i porównać z ssid, jeśli są one takie same, możesz spróbować uzyskać getConnectionInfo().getNetoworkId(), który powinien nadać identyfikator sieci połączonej sieci, którego możesz użyć do usunięcia sieci.

Spróbuj tego:

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

I rzeczywiście nie trzeba ciężko kodem specyficzny SSID zostać usunięty - ja po prostu chcesz usunąć dowolny identyfikator SSID jest aktualnie podłączony. Zaktualizowałem swój kod źródłowy powyżej (pominąłem sekcję, o której wspomniałeś, tworząc ją, aby ją porównać - ponieważ chcę po prostu rozłączyć się, co jest połączone) Czy możesz rzucić okiem i sprawdzić, czy moja obecna implementacja wygląda poprawnie? –

+0

[Naprawdę doceniam twoją pomoc z tym!] –

+0

Masz większość z tego. Wypróbuj kod w zredagowanej odpowiedzi. – 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(); 
    } 

} 
Powiązane problemy