android监听wifi断开,使用BroadcastReceiver获取Android中断开的WiFi网络的SSID?

我有以下BroadcastRecevier:

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());

}

}

它接收网络连接和断开连接事件 .

当它连接到WiFi网络时,我能够轻松获得网络的SSID .

但我希望能够在网络断开时获得WiFi网络的SSID(无需存储先前连接的网络,然后以这种方式匹配它们等) . 这可能吗?

WiFi连接时记录日志:

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

WiFi断开连接时记录(注意未知的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: , roaming: false, failover: false, isAvailable: true]

V/WiFiConnectionEventsReceiver: key [networkType]: 1

V/WiFiConnectionEventsReceiver: key [inetCondition]: 0

V/WiFiConnectionEventsReceiver: key [extraInfo]:

V/WiFiConnectionEventsReceiver: key [noConnectivity]: true

D/NetworkInfo: Don't have Wifi Connection

D/NetworkInfo: id

D/NetworkInfo: MOBILE

D/WifiInfo: SSID: , BSSID: , 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

我想要这个信息的原因是我希望能够跟踪用户在每个网络上的WiFi使用情况 - 连接和断开连接时间 .

如果没有断开连接的网络的SSID,我能想到的唯一方法就是:

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

然而,上述方法感觉不稳定,例如,如果由于某种原因错过了WiFi断开事件等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值