package com.datdo.mobilib.base; import com.datdo.mobilib.event.MblCommonEvents; import com.datdo.mobilib.event.MblEventCenter; import com.datdo.mobilib.util.MblUtils; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; class MblNetworkStatusChangedReceiver extends BroadcastReceiver { private static enum MblNetworkStatus { ON, OFF } private MblNetworkStatus mLastStatus; public MblNetworkStatusChangedReceiver() { mLastStatus = getStatus(); } @Override public void onReceive(Context context, Intent intent) { MblNetworkStatus status = getStatus(); if (mLastStatus != status) { boolean isOn = status == MblNetworkStatus.ON; MblEventCenter.postEvent(this, isOn ? MblCommonEvents.NETWORK_ON : MblCommonEvents.NETWORK_OFF); mLastStatus = status; } } private MblNetworkStatus getStatus() { try { return MblUtils.isNetworkConnected() ? MblNetworkStatus.ON : MblNetworkStatus.OFF; } catch (Exception e) { // android.permission.ACCESS_NETWORK_STATE is not allowed, etc... return null; } } }