2016-04-04 4 views
1

Ich versuche, eine Verbindung zu einem bestimmten WLAN-Netzwerk, wie beschrieben here. Obwohl es manchmal funktioniert, passiert es meistens nicht. Ich verstehe nicht wirklich warum, wenn ich die App starte, sagen wir 10 mal, das Gerät verbindet sich 2 Mal mit meinem Netzwerk und die anderen 8 nicht.Android ändern WiFi-Netzwerk funktioniert nicht

Im folgenden ist der Code, den ich in einem Fragment verwende.

WifiConfiguration wificonfiguration = new WifiConfiguration(); 
wificonfiguration.SSID = "\"" + networkSSID + "\""; 
wificonfiguration.priority = 40; 
wificonfiguration.status = WifiConfiguration.Status.ENABLED; 

// WPA management 
wificonfiguration.allowedProtocols.set(WifiConfiguration.Protocol.RSN); 
wificonfiguration.allowedProtocols.set(WifiConfiguration.Protocol.WPA); 
wificonfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 
wificonfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
wificonfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
wificonfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); 
wificonfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); 
wificonfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
wificonfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
wificonfiguration.preSharedKey = "\"" + networkPass + "\""; 

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

int networkId = wifiManager.addNetwork(wificonfiguration); 

if (networkId > -1) { 
    boolean status = wifiManager.enableNetwork(networkId, true); 
} 

Die Netzwerk-Konfiguration wird den Manager tatsächlich hinzugefügt und status Wert ist wahr. Ich habe es auf mehreren Geräten mit Lollipop ausgeführt. Auch das Netzwerk, mit dem ich mich verbinden möchte, bietet keinen Internetzugang, also dachte ich auch, dass das ein Problem für das sein könnte, was in der Anmerkung here angegeben ist. Kann mir jemand sagen, ob der Code in Ordnung ist?

Gelöst

Das Problem wird durch das Hinzufügen wifiManager.disconnect(); vor dem Hinzufügen der neue Netzwerkkonfiguration gelöst wurde.

Antwort

0

Sie können das gesamte Netzwerk über die unten beschriebene Methode deaktivieren, bevor Sie das Netzwerk hinzufügen. Dies würde alle konfigurierten Netzwerke für die automatische Verbindung deaktivieren.

for (WifiConfiguration wifiConfiguration_ : wifiManager.getConfiguredNetworks()) { 

     wifiConfiguration_.status = WifiConfiguration.Status.DISABLED; 
     int returnNetworkId_ = wifiManager.updateNetwork(wifiConfiguration_); 
} 
+0

Leider hat es nicht funktioniert, aber die Verbindung über 'wifiManager.disconnect();' tat. – aleGrazioli