2017-04-08 6 views
0

Ich lerne über WifiManager, WifiConfiguration APIs.
Was ich versuche zu erreichen ist, dass ich eine Verbindung zu einem bestimmten Netzwerk herstellen möchte.
Das ist meine Hauptaufgabe Verbindung zu einem spezifischen Netzwerk, aber wenn mein Gerät bereits mit einem anderen Netzwerk verbunden ist, möchte ich vom Netzwerk zu meinem spezifischen Netzwerk wechseln.
Hier ist der SchnipselSo wechseln Sie von einem WLAN-Netzwerk zu einem anderen in Android

int networkId ; 
    WifiConfiguration wc = new WifiConfiguration(); 
    wc.SSID = "ABCDEFG"; 
    wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 
    wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE); 


    Log.d("Rohit", "Adding wifi config"); 

    networkId = wifiManager.addNetwork(wc); 

    Log.d("Rohit", "Config added\ndisconnecting\nid = "+networkId); 

    wifiManager.disconnect(); 

    Log.d("Rohit", "Disconnected\nNetwork enabling"); 

    wifiManager.enableNetwork(networkId, true); 

    Log.d("Rohit", "enabled\n reconnecting...."); 

    wifiManager.reconnect(); 

    Log.d("Rohit","connected"); 

Hier ist der Ausgang debuggt

04-08 19: 57: 49,690 3326-3326/com.example.illuminati.services D/Rohit: Hinzufügen von WiFi Config 04-08 19: 57: 49.964 3326-3326/com.beispiel.illuminati.services D/Rohit: Konfig hinzugefügt 04-08 19: 57: 49.964 3326-3326/com.beispiel.illuminati.services D/Rohit: trennen 04-08 19: 57: 49.964 3326-3326/com.beispiel.illuminati.services D/Rohit: id = 64 04-08 19: 57: 49.964 3326-3326/co m.beispiel.illuminati.services D/Rohit: Getrennt 04-08 19: 57: 49.964 3326-3326/com.beispiel.illuminati.services D/Rohit: Netzwerkfreigabe 04-08 19: 57: 50.087 3326-3326 /com.example.illuminati.services D/Rohit: enabled 04-08 19: 57: 50.087 3326-3326/com.beispiel.illuminati.services D/Rohit: reconnecting .... 04-08 19:57: 50,089 3326-3326/com.example.illuminati.services D/Rohit: connected

wenn das Gerät nicht mit einem Netzwerk verbunden ist, es um das spezifische Netzwerk verbindet Aber wenn es mit anderem Netzwerk verbunden ist, wird es wieder anschließen zu demselben Netzwerk wieder.
Was fehlt mir hier?
Ich habe eine ähnliche Frage in Stackoverflow gefunden, aber das hilft nicht.
Irgendwelche Hilfe würde geschätzt werden :)

Antwort

0

Ok Nach 30-40 Minuten des Testens funktionierte das für mich.
Ich habe eine separate Methode erstellt, um das derzeit aktive Netzwerk zu deaktivieren.
Aber eine Sache, die ich nicht verstehe, dass in wifiManager.enableNetwork (networkId, wahr); Der zweite Parameter ist disableOthers.
Also, wenn ich wifiManager.enableNetwork (networkId, true) verwende; sollte es den Trick machen, der in meiner seperate Methode getan wird.
Gedanken pls? Hier

ist der aktualisierte Code

int networkId ; 
    wifiConfig = getWifiConfig(); 
    wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE); 

    // if(wifiManager.) 

    WifiInfo info = wifiManager.getConnectionInfo(); 
    Log.d("Rohit", "current ssid "+info.getSSID()); 

    boolean disable =disableCurrent(info.getSSID()); 
    // Log.d("Rohit","disabled ?"+disable); 


    Log.d("Rohit", "Adding wifi config"); 
    networkId = wifiManager.addNetwork(wifiConfig); 
    //wifiManager.enableNetwork(networkId, true); 

    wifiManager.disconnect(); 
    Log.d("Rohit", "Config added\ndisconnecting\nid = " + networkId); 
    wifiManager.enableNetwork(networkId, true); 


    Log.d("Rohit", "Disconnected\nNetwork enabling"); 


    Log.d("Rohit", "enabled\n reconnecting...."); 
    wifiManager.reconnect(); 


    Log.d("Rohit", "connected"); 

Und hier ist die separate Methode

public boolean disableCurrent(String ssid) 
{ 
    List<WifiConfiguration> configuredNetworks = wifiManager.getConfiguredNetworks(); 

    for(WifiConfiguration conf : configuredNetworks) 
    { 
     Log.d("Rohit","List "+conf.SSID); 
     if(conf.SSID.equals(ssid)) { 
      Log.d("Rohit","Inside"); 
      wifiManager.disableNetwork(conf.networkId); 
      return true; 
     } 
    } 
    return false; 
} 
Verwandte Themen