Erhalten Sie SSID wenn WIFI verbunden ist
Ich versuche, die SSID des WLAN-Netzwerk, wenn mein android-Gerät ist WIFI-Verbindung.
Habe ich registriert einen BroadcastReceiver hören für android.net.wifi.supplicant.CONNECTION_CHANGE
. Ich bekomme die Benachrichtigung, wenn WIFI getrennt oder wieder angeschlossen werden. Leider komme ich nicht an die Netzwerk-SSID.
Ich bin mit dem folgenden code zu finden, der SSID:
WifiManager wifiManager = (WifiManager) context.getSystemService(context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();
Statt der SSID, bekomme ich den string <unbekannt ssid>
zurück.
Diese sind die Berechtigungen in der Manifestdatei (die ich Hinzugefügt habe, ACCESS_NETWORK_STATE, nur um zu überprüfen, die ich gar nicht brauche)
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
Warum geschieht dies? Wie kann ich die tatsächliche SSID? Ist die Sendung gefeuert zu früh, bevor die Verbindung hergestellt wird? Gibt es eine andere Sendung, die ich hören sollte? Ich bin nur daran interessiert, WIFI-verbindungen, nicht 3G-verbindungen.
Update: ich habe gerade überprüft, wifiInfo.getBSSID()
null zurück.
InformationsquelleAutor der Frage zmbq | 2014-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Höre ich für WifiManager.NETWORK_STATE_CHANGED_ACTION in einem broadcast-Empfänger
Überprüfe ich für netInfo.isConnected (). Dann bin ich in der Lage zu verwenden
UPDATE
Vom android 8.0 ab, die wir nicht bekommen, die SSID des verbundenen Netzwerks, es sei denn, GPS ist eingeschaltet.
InformationsquelleAutor der Antwort Eric Woodruff
Beginnend mit Android-8.1-API (27), apps gewährt werden müssen, die
ACCESS_COARSE_LOCATION
(oderACCESS_FINE_LOCATION
) die Erlaubnis um die zu erhalten Ergebnisse ausWifiInfo.getSSID()
oderWifiInfo.getBSSID()
.Diese Berechtigung ist auch erforderlich, um die Ergebnisse aus
WifiManager.getConnectionInfo()
undWifiManager.getScanResults()
obwohl es ist nicht klar, ob dies ist neu in 8.1 oder erforderlich war zuvor.Quelle: "BSSID/SSID kann verwendet werden, um abzuleiten Lage, so erfordern die gleichen
Lage Berechtigungen für den Zugriff auf diese Felder WifiInfo
angefordert mit WifiManager.getConnectionInfo() für
WifiManager.getScanResults()."
InformationsquelleAutor der Antwort mike47
Wenn Sie nicht wollen, um Broadcast Receiver dann einfach versuchen
Erinnern, jedes mal, wenn Benutzer die Verbindung trennen oder Verbindung zu einer neuen SSID oder irgendwelche WLAN-Status ändern, dann müssen Sie initialisieren WifiInfo ich.e
wifiInfo = wifiManager.getConnectionInfo();
InformationsquelleAutor der Antwort Pranav
Einfache und einfachste Weg.
InformationsquelleAutor der Antwort Yogesh Rathi
In Android 8.1 es müssen gedrehten Lage, um die SSID, wenn Sie nicht bekommen kann die Verbindung Stand, aber nicht die SSID
InformationsquelleAutor der Antwort user3143487
Check über die NetworkInfo-für die wifi-Typ, wenn es angeschlossen ist.
Und dann verwenden wifiinfo getSSid(). Möchten Sie vielleicht zu entfernen doppelte slashes aus returnd SSID
https://play.google.com/store/apps/details?id=com.connect.freewifi
Sollten Sie sich diese Anwendung und Entwickler-api von
http://developer.android.com/reference/android/net/wifi/WifiInfo.html
Wird es Ihnen bei Ihrer Aufgabe helfen.
InformationsquelleAutor der Antwort Adam Geller