Android WIFI状态监控

本文详细介绍了如何监听WiFi状态的变化以及判断网络连接是否正常,包括五种WiFi状态的识别和两种网络连接状态的判断方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一类:有无wifi源及各个状态间转变

可监听 WIFI_STATE_CHANGED_ACTION。(如下图所示,双击图片可放大)


有五种情况:
1-1 disabled
1-2 disabling
1-3 enable
1-4 enabling
1-5 unknown

可通过不同的Extra值,见下图(双击可放大)获得状态常量:

代码如下:


1.if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {//在此监听wifi有无
2. int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);
3.
4. switch (wifiState) {
5. case WifiManager.WIFI_STATE_DISABLED:
6. updateWifiStatus(R.drawable.wifi_disable);
7. Toast.makeText(mContext, R.string.wifi_disable,
8. Toast.LENGTH_LONG).show();
9. break;
10. case WifiManager.WIFI_STATE_DISABLING:
11. break;
12. case WifiManager.WIFI_STATE_ENABLED:
13. updateWifiStatus(R.drawable.wifi_enable);
14. Toast.makeText(mContext, R.string.wifi_enable,
15. Toast.LENGTH_LONG).show();
16. break;
17. case WifiManager.WIFI_STATE_ENABLING:
18. break;
19. case WifiManager.WIFI_STATE_UNKNOWN:
20. break;
21. }
22. }

也可通过以下代码实现:
1.//另外一种方式
2. mWifiMng = (WifiManager) mContext
3. .getSystemService(mContext.WIFI_SERVICE);
4.
5. switch (mWifiMng.getWifiState()) {
6. case WifiManager.WIFI_STATE_DISABLED:
7. updateWifiStatus(R.drawable.wifi_disable);
8. Toast.makeText(mContext, R.string.wifi_disable,
9. Toast.LENGTH_LONG).show();
10. break;
11. case WifiManager.WIFI_STATE_DISABLING:
12. break;
13. case WifiManager.WIFI_STATE_ENABLED:
14. updateWifiStatus(R.drawable.wifi_enable);
15. Toast.makeText(mContext, R.string.wifi_enable,
16. Toast.LENGTH_LONG).show();
17. break;
18. case WifiManager.WIFI_STATE_ENABLING:
19. break;
20. case WifiManager.WIFI_STATE_UNKNOWN:
21. break;
22. }

第二类:wifi是否连接正常

可监听:NETWORK_STATE_CHANGED_ACTION(如下图所示,双击图片可放大)


有两种状况:
2-1连接
2-1未连接
在OnReceiver方法中,通过不同Extra值,获得连接状况,如下图,双击图片放大:

代码如下:

1.if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
2. Parcelable parcelableExtra = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
3. if (null != parcelableExtra) {
4. NetworkInfo networkInfo = (NetworkInfo) parcelableExtra;
5. boolean isConnected = networkInfo.isAvailable();
6. updateNetworkStatus();
7. }
8. }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值