1、添加相应权限
为了获取wifi 相关内容需要添加相关权限
<uses-permission android:name="android.permission.access_wifi_state" />
<uses-permission android:name="android.permission.access_network_state" />
2、wifi的静态监听
实现wifi 的静态监听监听 ,就是在整个app 使用过程中都可以接收到广播。
AndroidManifest.xml配置文件中声明
··········
<receiver android:name=".WifiNetConnectReceive" > //这个是你接受监听的类文件
<intent-filter> //添加监听的相关动作
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
</receiver>
··········
3、动态监听
注册监听
//在想实现监听的activity 中
@Override
public void onResume() {
super.onResume();
IntentFilter inf = new IntentFilter();
inf.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
inf.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
inf.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
context.registerReceiver(new WifiNetConnectReceive(), inf);
System.out.println(TAG + "动态注册wifi监听");
}
注销监听
@Override
public void onDestroy() {
super.onDestroy();
try {
context.unregisterReceiver(new WifiNetConnectReceive());
}catch (IllegalArgumentException e) {
throw e;
}
}
4、接受广播具体操作
public class WifiBroadCastReceive extends BroadcastReceiver {
private String TAG = "WifiBroadCastReceive :";
@Override
public void onReceive(Context context, Intent intent) {
//wifi 是否连接 热点
if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (info.getState().equals(NetworkInfo.State.DISCONNECTED)) {
System.out.println( TAG + "wifi 网络断开 ");
}
if (info.getState().equals(NetworkInfo.State.DISCONNECTING)) {
System.out.println( TAG + "wifi 网络正 断开");
}
if (info.getState().equals(NetworkInfo.State.CONNECTED)) {
System.out.println( TAG + "链接到网络热点");
}
}
//wifi是否打开
if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);
System.out.println("wifistate is : " + wifistate);
if (wifistate == WifiManager.WIFI_STATE_DISABLED) {
System.out.println( TAG + "系统关闭wifi");
} else if (wifistate == WifiManager.WIFI_STATE_ENABLED) {
System.out.println( TAG + "系统开启wifi");
}
}
}
}
文章参考:
Android 通过注册广播,实时监听网络连接与断开状态的变化
https://blog.csdn.net/qq_20785431/article/details/51520459