Android: Checking network connectivity return not connected when connected to wifi/3g in Broadcast receiver

前端 未结 3 511
名媛妹妹
名媛妹妹 2020-12-06 19:03

I want to check if device in connected or not in broadcastReceiver. below is my code :

public boolean isOnline(Context context) {
NetworkInfo info = (Network         


        
3条回答
  •  日久生厌
    2020-12-06 19:26

    I believe the way you can do this is,

    Register a Broadcast Receiver with an IntentFilter of ConnectivityManger.Connectivity_Action

    private BroadcastReceiver receiverDataChange;
    
    private void registerData(){
    
        try {
            receiverDataChange = new bcr_ToggleData();
            IntentFilter filterData = new IntentFilter();
            filterData.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
            registerReceiver(receiverDataChange, filterData);
    
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        }}
    

    Then in your Broadcast receiver class

    public class bcr_ToggleData extends BroadcastReceiver {
    
    
    @Override
    public void onReceive(Context context, Intent intent) {
    
        String action = intent.getAction();
    
        if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
    
            TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            int state = telephonyManager.getDataState();
            switch (state){
    
                case TelephonyManager.DATA_DISCONNECTED: // off
                    Log.d("DavidJ", "DISCONNECTED");
                    break;
    
                case TelephonyManager.DATA_CONNECTED: // on
                    Log.d("DavidJ", "CONNECTED");
                    break;
            }
        }
    }
    

    }

    This fires off when you go into your settings and turn on/off mobile data.

    Hope this helps! :)

提交回复
热议问题