Ich erstelle eine App, die alle verfügbaren WLANs in einem ListView auflisten kann. Wenn ich eines der WLANs in der Liste auswähle, das zuvor in List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
zwischengespeichert wurde, sollte es sich damit verbinden. Wenn die WifiConfiguration
-Liste das ausgewählte WLAN nicht enthält, passiert nichts. Mein Problem ist, dass ich manchmal ein Wifi von der Liste wähle (von der ich sicher bin, dass sie in der WifiConfiguration
-Liste ist), aber es verbindet sich nicht mit ihr. Stattdessen verbindet es sich mit dem zuvor verbundenen WLAN. Nach einigen Versuchen (immer wieder das selbe WLAN auswählend) verbindet es sich schließlich damit. Dies geschieht nicht immer, nur manchmal. Was kann das Problem sein? Hier ist mein Codeausschnitt:
Das ist was los ist. Grundsätzlich können Sie das Betriebssystem anweisen, ein Netzwerk zu deaktivieren, und Sie können dem Betriebssystem mitteilen, dass es ein Netzwerk aktivieren soll. Es ist jedoch nicht möglich, dem Betriebssystem mitzuteilen, mit welchem Netzwerk es sich verbinden soll.
Wenn mehrere WLAN-Zugriffspunkte in Reichweite sind, die beide auf dem Gerät konfiguriert sind (und beide im Status enabled
sind), entscheidet das Betriebssystem, mit welcher Verbindung es sich verbinden soll.
Die einzige Möglichkeit, das Betriebssystem zu zwingen, eine Verbindung zu einem der Netzwerke im Bereich statt dem anderen herzustellen, besteht darin, disableNetwork()
im Netzwerk aufzurufen, das sich im Bereich befindet, mit dem Sie keine Verbindung herstellen möchten.
Gehen wir Zeile für Zeile durch Ihren Code:
%Vor%Die obige Zeile weist das Betriebssystem an, die Verbindung zum derzeit verbundenen WLAN-Zugangspunkt zu trennen.
%Vor% Die obige Zeile weist das Gerät an, das Netzwerk auf den enabled
-Zustand zu setzen, wenn es sich zuvor im Status disabled
befand.
Von der Dokumentation :
Stellen Sie die Verbindung zum derzeit aktiven Zugangspunkt wieder her, wenn wir gerade sind getrennt. Dies kann zur asynchronen Zustellung des Status führen Ereignisse ändern.
Wenn Sie also sagen, verbindet es sich stattdessen mit dem zuvor verbundenen WLAN. Es funktioniert genau wie erwartet, da sich das Betriebssystem wieder mit dem aktiven Zugriff verbindet Zeigen Sie .
Wenn Sie das andere Netzwerk wirklich deaktivieren möchten, so dass das Betriebssystem eine Verbindung zu der Verbindung herstellt, auf die Sie gerade geklickt haben, können Sie Folgendes tun:
%Vor%Hi, anstatt das vorherige Netzwerk zu deaktivieren, können Sie die Priorität des Netzwerks, mit dem Sie eine Verbindung herstellen möchten, größer als alle anderen konfigurierten Netzwerke ändern und dann die Verbindung wiederherstellen (). Es verbindet sich mit dem Netzwerk mit der höchsten Priorität in Reichweite.
%Vor%Tags und Links android android-wifi