Mam następujący BroadcastRecevier:Uzyskaj identyfikator SSID odłączonej sieci Wi-Fi w systemie Android za pomocą 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());
}
}
odbiera połączenie sieciowe i zdarzenia rozłączenia.
Po podłączeniu do sieci Wi-Fi mogę łatwo uzyskać identyfikator SSID sieci.
Ale chcę mieć możliwość uzyskania identyfikatora SSID sieci Wi-Fi również wtedy, gdy sieć jest rozłączona (bez konieczności przechowywania wcześniej podłączonych sieci, a następnie dopasowywania ich w ten sposób itd.). czy to możliwe?
Dzienniki kiedy WiFi łączy:
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
Dzienniki gdy rozłącza WiFi (uwaga nieznany 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
Powodem Chciałbym to info jest chcę, aby móc śledzić wykorzystanie sieci Wi-Fi przez użytkownika w każdej sieci - czasy połączenia i rozłączenia.
Bez SSID sieci odłączonym, jedynym sposobem można myślę, aby to zrobić jest coś jak:
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
Jednak powyższe podejście czuje łuszcząca się, na przykład, co zrobić, jeśli z jakiegoś powodu WiFi Brakuje zdarzenia odłączenia itp.
Proponuję użyć czegoś takiego. Nie jest to jednak gwarancja, że jest to połączenie niepołączone, tylko jedno, które zostało wcześniej połączone, a które jest teraz widoczne na dostępnych żonach. –
Masz rację, ale po otrzymaniu tej listy możesz porównać bssid każdego przedmiotu z odłączonym wifi. Może go nie znaleźć przez cały czas, ale w dużej mierze będzie. – Dus