Ich habe folgendes BroadcastRecevier:Erhalten Sie SSID von getrennten WiFi-Netzwerk in Android mit BroadcastReceiver?
public class WiFiConnectionEventsReceiver extends BroadcastReceiver {
private static final String TAG = WiFiConnectionEventsReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, @NonNull Intent intent) {
Log.v(TAG, "action: " + intent.getAction());
Log.v(TAG, "component: " + intent.getComponent());
Bundle extras = intent.getExtras();
if (extras != null) {
for (String key : extras.keySet()) {
Log.v(TAG, "key [" + key + "]: " +
extras.get(key));
}
} else {
Log.v(TAG, "no extras");
}
ConnectivityManager conMan = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = conMan.getActiveNetworkInfo();
if (netInfo != null && netInfo.getType() == ConnectivityManager.TYPE_WIFI) {
Log.d("NetworkInfo", "Have Wifi Connection");
Log.d("NetworkInfo", netInfo.getExtraInfo());
Log.d("NetworkInfo", netInfo.getTypeName());
}
else {
Log.d("NetworkInfo", "Don't have Wifi Connection");
Log.d("NetworkInfo", netInfo.getExtraInfo());
Log.d("NetworkInfo", netInfo.getTypeName());
}
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
Log.d("WifiInfo", wifiManager.getConnectionInfo().toString());
}
}
Er empfängt die Netzwerkverbindung und Trennung Veranstaltungen.
Wenn es zu einem WiFi-Netzwerk verbindet, kann ich die SSID des Netzwerks leicht erhalten.
Aber ich möchte in der Lage sein, die SSID des WiFi-Netzwerkes zu bekommen, wenn das Netzwerk ebenfalls getrennt ist (ohne zuvor verbundene Netzwerke speichern und dann auf diese Weise anpassen etc.). Ist das möglich?
Logs, wenn WiFi verbindet:
V/WiFiConnectionEventsReceiver: action: android.net.conn.CONNECTIVITY_CHANGE
V/WiFiConnectionEventsReceiver: component: ComponentInfo{com.example.test/com.example.test.WiFiConnectionEventsReceiver}
V/WiFiConnectionEventsReceiver: key [networkInfo]: [type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: "SKY123”, roaming: false, failover: false, isAvailable: true]
V/WiFiConnectionEventsReceiver: key [networkType]: 1
V/WiFiConnectionEventsReceiver: key [inetCondition]: 100
V/WiFiConnectionEventsReceiver: key [extraInfo]: "SKY123”
D/NetworkInfo: Have Wifi Connection
D/NetworkInfo: "SKY123”
D/NetworkInfo: WIFI
D/WifiInfo: SSID: SKY123, BSSID: 10:40:03:ad:6x:c9, MAC: 02:00:00:00:00:00, Supplicant state: COMPLETED, RSSI: -79, Link speed: 43Mbps, Frequency: 2412MHz, Net ID: 1, Metered hint: false, score: 60
Logs, wenn WiFi trennt (Anmerkung unbekannt SSID):
V/WiFiConnectionEventsReceiver: action: android.net.conn.CONNECTIVITY_CHANGE
V/WiFiConnectionEventsReceiver: component: ComponentInfo{com.example.test/com.example.test.WiFiConnectionEventsReceiver}
V/WiFiConnectionEventsReceiver: key [networkInfo]: [type: WIFI[], state: DISCONNECTED/DISCONNECTED, reason: (unspecified), extra: <unknown ssid>, roaming: false, failover: false, isAvailable: true]
V/WiFiConnectionEventsReceiver: key [networkType]: 1
V/WiFiConnectionEventsReceiver: key [inetCondition]: 0
V/WiFiConnectionEventsReceiver: key [extraInfo]: <unknown ssid>
V/WiFiConnectionEventsReceiver: key [noConnectivity]: true
D/NetworkInfo: Don't have Wifi Connection
D/NetworkInfo: id
D/NetworkInfo: MOBILE
D/WifiInfo: SSID: <unknown ssid>, BSSID: <none>, MAC: 02:00:00:00:00:00, Supplicant state: COMPLETED, RSSI: -127, Link speed: -1Mbps, Frequency: -1MHz, Net ID: -1, Metered hint: false, score: 0
Der Grund, warum ich diese Informationen möchten ist, ich will ein in der Lage sein zu verfolgen WLAN-Nutzung des Nutzers in jedem Netzwerk - die Verbindungs- und Verbindungszeiten.
Ohne die SSID des abgezogenen Netzwerkes, die einzige Möglichkeit, die ich denken kann, dies zu tun, ist so etwas wie:
if (WiFi network ABC disconnected)
if (if previous stored connection for WiFi network ABC has no disconnection time)
set WiFI network ABC disconnection time to now
jedoch der obige Ansatz fühlt sich flockig, zum Beispiel, was aus irgendeinem Grunde, wenn ein WiFi Verbindungsereignis wird verpasst usw.
Ich würde vorschlagen, so etwas zu verwenden. Es ist jedoch keine Garantie, dass es sich um eine Verbindung handelt, die zuvor nicht verbunden war und nur auf den verfügbaren Wifis angezeigt wird. –
Sie haben Recht, aber nachdem Sie diese Liste erhalten haben, können Sie die BSSID jedes Elements mit dem getrennten Wifi vergleichen. Es wird es vielleicht nicht immer finden, aber zu einem großen Teil wird es das tun. – Dus