Android Wifi Scan - BroadcastReceiver para SCAN_RESULTS_AVAILABLE_ACTION no se llama

Aquí está mi código:

public class FloatWifiManager implements IWifiManager {

    private WifiManager wifiManager;

    private BroadcastReceiver wifiScanReceiver;

    public FloatWifiManager(Context context) {
        ...
        wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

        // Registering Wifi Receiver
        wifiScanReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context c, Intent intent) {
                if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
                    // not getting called, only after running app and manually going to the wifi settings in android
                }
            }
        };

        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
        context.registerReceiver(wifiScanReceiver, intentFilter);
        wifiManager.startScan();
    }

Registré elBroadcastReceiver exactamente como vi en todos los ejemplos, e hicestartScan.

Lo que pasa es que ellista wifi está cambiando (seguro, lo probé), peroonReceive no se llama si solo me quedo en la aplicación.

Lo que haceonReceive finalmente se llamará: es iniciar la aplicación, dejarla en funcionamiento y entrar en el teléfono Android paraConfiguraciones ->Configuración wifi. al ir allí, de repente, la Lista se está actualizando yonReceive se llama.

¿Cuál es el problema aquí?

HacewifiManager.startScan(); ejecuta el escaneo solo una vez? o es una función que sigue escuchando los "Resultados de escaneo" entrantes?

Y obviamente, ¿por qué no se llama al receptor?

Respuestas a la pregunta(1)

Su respuesta a la pregunta