Wie stelle ich programmatisch eine Verbindung zu einem bestimmten Wi-Fi-Netzwerk in Android her?
Ich möchte eine app zu entwerfen, die zeigt eine Liste der verfügbaren WLAN-Netzwerke und die Verbindung zu welchem Netz ist der Benutzer ausgewählt hat.
Implementierte ich das Teil zeigt den scan-Ergebnissen. Jetzt will ich eine Verbindung zu einem bestimmten Netzwerk ausgewählt, indem der Benutzer aus der Liste der scan-Ergebnisse.
Wie mache ich das?
InformationsquelleAutor der Frage Vikram Gupta | 2012-01-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie erstellen
WifiConfiguration
Instanz wie folgt:Dann, für den WEP-Netzwerk, das Sie brauchen, um dies zu tun:
Für die WPA-Netzwerk müssen Sie die passphrase so:
Für das Offene Netzwerk, die Sie brauchen, um dies zu tun:
Dann müssen Sie es hinzufügen, um Android-wifi-manager-Einstellungen:
- Und schließlich, müssen Sie möglicherweise um es zu aktivieren, so dass Android-mit ihm verbindet:
UPD: Im Falle von WEP, wenn Ihr Passwort in hex ist, Sie brauchen nicht zu umgeben Sie mit Anführungszeichen.
InformationsquelleAutor der Antwort kenota
Den früher beantworten funktioniertaber die Lösung kann tatsächlich einfacher sein. Durchlaufen der Liste konfigurierte Netzwerke ist nicht erforderlich, da Sie die Netzwerk-id, wenn Sie das Netzwerk hinzufügen durch den WifiManager.
Also die komplette, vereinfachte Lösung würde wie folgt Aussehen:
InformationsquelleAutor der Antwort sean loyola
Finden: https://developer.android.com/reference/android/net/wifi/ScanResult.html#capabilities
Gibt es drei Arten von WIFI-Netzwerken.
Zuerst instanziieren Sie ein WifiConfiguration-Objekt, und füllen Sie die Netzwerk-SSID (Anmerkung: es muss in doppelte Anführungszeichen eingeschlossen werden), und legen Sie die anfänglichen Status auf "deaktiviert" und geben Sie die Netzwerk-Priorität (zahlen um die 40 scheinen gut zu funktionieren).
Nun der kompliziertere Teil: wir müssen Sie füllen mehrere Mitglieder WifiConfiguration zu geben Sie die Netzwerk-Sicherheits-Modus.
Für offene Netzwerke.
Für Netzwerke mit WEP; beachten Sie, dass die WEP-Schlüssel ist auch in doppelte Anführungszeichen eingeschlossen.
In Netzwerken mit WPA und WPA2, können wir die gleichen Werte bei beiden.
Endlich können wir das Netzwerk hinzufügen, um den WifiManager ist bekannt Liste
InformationsquelleAutor der Antwort raji ramamoorthi
Kredit @raji-ramamoorthi & @kenota
Die Lösung die bei mir funktioniert ist die Kombination von oben genannten Mitwirkenden in diesem thread.
Bekommen
ScanResult
hier ist der Prozess.Mitteilung an
unregister
es aufonPause
&onStop
LebenunregisterReceiver(broadcastReceiver);
InformationsquelleAutor der Antwort Rohit Mandiwal
Dies ist eine Aktivität, die Sie können eine Unterklasse zu zwingen, die Verbindung zu einem bestimmten WLAN:
https://github.com/zoltanersek/android-wifi-activity/blob/master/app/src/main/java/com/zoltanersek/androidwifiactivity/WifiActivity.java
Müssen Sie Unterklasse dieser Tätigkeit und die Umsetzung seiner Methoden:
InformationsquelleAutor der Antwort Zoltan Ersek
Wenn Ihr Gerät kennt die WLAN configs (bereits gespeichert), können wir umgehen Hexenwerk. Einfach eine Schleife durch die configs überprüfen, ob die SSID passt. Wenn ja, anschließen und zurück.
Berechtigungen festlegen:
Verbinden:
InformationsquelleAutor der Antwort Martin Pfeffer
Ich brach meinem Kopf, um zu verstehen, warum Ihre Antworten für WPA/WPA2 nicht funktionieren...nach Stunden von versuchen habe ich gefunden, was Sie vermissen:
ist ERFORDERLICH für WPA-Netze!!!!
Nun, es funktioniert 🙂
InformationsquelleAutor der Antwort Taras Okunev
Versuchen, diese Methode. Es ist ganz einfach:
InformationsquelleAutor der Antwort Hiren Vaghela
InformationsquelleAutor der Antwort Ege Kuzubasioglu