版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jiaoyaning1210/article/details/52525590
当然离不开广播
public class NetBroadcastReceiver extends BroadcastReceiver {
public NetBroadcastReceiver() {
}
private NetContentListener netContentListener;
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
//改变背景或者 处理网络的全局变量
netContentListener.netContent(false);
} else {
//改变背景或者 处理网络的全局变量
netContentListener.netContent(true);
}
}
public void setNetContentListener(NetContentListener netContentListener) {
this.netContentListener = netContentListener;
}
public interface NetContentListener {
void netContent(boolean isConnected);
}
}
别忘了在清单文件里面注册
<receiver
android:name=".receiver.NetBroadcastReceiver"
android:enabled="false"
android:exported="false">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
要读取网络状态,还需要加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
最后就是在对于的地方注册广播进行监听
//监听网络状态
private void registerNetReceiver() {
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
NetBroadcastReceiver netBroadcastReceiver = new NetBroadcastReceiver();//这应该是个全局变量,为了方便观看,才写成了局部
this.registerReceiver(netBroadcastReceiver, filter);
netBroadcastReceiver.setNetContentListener(new NetBroadcastReceiver.NetContentListener() {
@Override
public void netContent(boolean isConnected) {
if (isConnected) {
LogUtils.tag("main").i("网络连接");
layout_notconnet.setVisibility(View.GONE);
} else {
LogUtils.tag("main").i("网络断开");
layout_notconnet.setVisibility(View.VISIBLE);
}
}
});
}
最后别忘记在activity关闭的时候把注册的广播给取消掉
“`
@Override
protected void onDestroy() {
super.onDestroy();
this.unregisterReceiver(netBroadcastReceiver);
}