在项目中我们经常有这样的需求,在下载图片或其他文件时会遇到网络不稳定的问题,导致下载失败等,因此,
监控网络连接的状态尤为重要,最近我做的一个项目主要依靠连接wifi来下载,因此就整理了一些用来监控wifi状态的小demo
第一步:首先在Activity中注册一个监控wifi状态的广播
1 package com.front.wifi_action; 2 3 import android.app.Activity; 4 import android.content.IntentFilter; 5 import android.net.wifi.WifiManager; 6 import android.os.Bundle; 7 8 public class MainActivity extends Activity { 9 10 @Override 11 public void onCreate(Bundle savedInstanceState) { 12 super.onCreate(savedInstanceState); 13 setContentView(R.layout.activity_main); 14 15 WifiBroad wifiReceiver=new WifiBroad(); 16 IntentFilter filter=new IntentFilter(); 17 filter.addAction(WifiManager.RSSI_CHANGED_ACTION); 18 filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); 19 filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); 20 this.registerReceiver(wifiReceiver,filter); 21 } 22 23 }
第二步:创建该广播,用来监控wifi的状态
1 package com.front.wifi_action; 2 3 import android.content.BroadcastReceiver; 4 import android.content.Context; 5 import android.content.Intent; 6 import android.net.NetworkInfo; 7 import android.net.wifi.WifiInfo; 8 import android.net.wifi.WifiManager; 9 10 public class WifiBroad extends BroadcastReceiver { 11 12 @Override 13 public void onReceive(Context context, Intent intent) { 14 if (intent.getAction().equals(WifiManager.RSSI_CHANGED_ACTION)) { 15 } else if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { 16 System.out.println("网络状态改变"); 17 NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); 18 if (info.getState().equals(NetworkInfo.State.DISCONNECTED)) {// 如果断开连接 19 System.out.println("wifi网络连接断开 "); 20 } 21 22 if(info.getState().equals(NetworkInfo.State.CONNECTING)){ 23 System.out.println("连接到wifi网络"); 24 } 25 } else if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) { 26 // WIFI开关 27 int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,WifiManager.WIFI_STATE_DISABLED); 28 if (wifistate == WifiManager.WIFI_STATE_DISABLED) {// 如果关闭 29 30 System.out.println("系统关闭wifi"); 31 } 32 33 if(wifistate==WifiManager.WIFI_STATE_ENABLED){ 34 System.out.println("系统开启wifi"); 35 } 36 } 37 38 }
第三步:最后记得添加权限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />