辞职了,一直忙的也没时间写东西,荒废了还久,上班期间也没有时间做自己的小东西。终于在投简历的时间缝隙里,可以做自己的东西,写自己的博客了。
废话不多说,直奔主题吧。 在做一款联网的项目时,我们必不可少的需要对网络状体进行监听,以提示用户在无网络和网络恢复。 BroadcastReceiver广播接收器,实时接收系统发出的广播,当断网时和网络连接上时,系统都会发出相应的广播已通知应用。
- 自定义广播接收器ConnectionChangeReceiver extends BroadcastReceiver
- 重写 public void onReceive(Context context, Intent intent) 方法
- 下面就是方法内代码:
boolean success = false;
//获得网络连接服务
ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
// State state = connManager.getActiveNetworkInfo().getState();
// 获取WIFI网络连接状态
NetworkInfo.State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
// 判断是否正在使用WIFI网络
if (NetworkInfo.State.CONNECTED == state) {
success = true;
netWorkState = new NetWorkState();
netWorkState.setNetWorkOK(true);
EventBus.getDefault().post(netWorkState);
}
// 获取GPRS网络连接状态
state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
// 判断是否正在使用GPRS网络
if (NetworkInfo.State.CONNECTED == state) {
success = true;
netWorkState = new NetWorkState();
netWorkState.setNetWorkOK(true);
EventBus.getDefault().post(netWorkState);
}
if (!success) {
ToastUtil.showToast("网络未连接,请检查网络连接状态");
}
- 紧接着就是在清单配置文件中注册:
<receiver
android:name=".util.ConnectionChangeReceiver"
android:label="NetworkConnection">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
- 最后就是在Activity中使用了:
private void checkNetWorkState() {
mNetworkStateReceiver = new ConnectionChangeReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mNetworkStateReceiver, filter);
}
- 也不要忘了在onDestroy()中取消注册:
@Override
protected void onDestroy() {
unregisterReceiver(mNetworkStateReceiver);
super.onDestroy();
}