Search code examples
androidbroadcastreceiver

Android: broadcast receiver not working


I have the following class for connection listener

public class connectionListener{
    public ConnectivityManager conMgr;
    public htmlParserListener vystrahyListener;
    public htmlParserListener podmienkyListener;
    private ConnectivityBroadcastReceiver mReceiver;

    public connectionListener(ConnectivityManager conMgr, htmlParserListener vystrahyListener, htmlParserListener podmienkyListener){
        this.conMgr = conMgr;
        this.vystrahyListener = vystrahyListener;
        this.podmienkyListener = podmienkyListener;
    }

    private class ConnectivityBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            System.out.println("connected");
        }
    }
    public synchronized void startListening(Context context) {
            IntentFilter filter = new IntentFilter();
            filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
            context.registerReceiver(mReceiver, filter);
            System.out.println("start");
        }
    }

I instantiate it with this code (from MainActivity):

    connectionListener conLst = new connectionListener(conMgr, vystrahyListener, podmienkyListener);
    conLst.startListening(this);

However I am getting "start" at output so startListening method works but I dont get "connected" when I disable or enable mobile data. So it looks like my BroadcastReceiver is not working. What am I doing wrong?

Thanks in forward


Solution

  • I dont get "connected" when I disable or enable mobile data.

    That is correct. This Broadcast is not triggered when mobile data is enabled or disabled but only when the network connectivity changes.

    So it looks like my BroadcastReceiver is not working. What am I doing wrong?

    Your BroadcastReceiver is working correctly. However, you expect the CONNECTIVITY_ACTION Broadcast to be triggered at an event where it isn't triggered.

    Note: there exists no (other) Broadcast which is sent by the system when the enabled state of mobile data is changed. You also have no option to register a Listener for this change.