Android Wifi Scan - BroadcastReceiver para SCAN_RESULTS_AVAILABLE_ACTION não sendo chamado

Aqui está o meu 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();
    }

Eu registrei oBroadcastReceiver exatamente como eu vi em todos os exemplos, e fizstartScan.

O que acontece é que olista wifi está mudando (com certeza, eu testei), masonReceive não é chamado se eu apenas permanecer no aplicativo.

O que faz oonReceive finalmente ser chamado - é iniciar o aplicativo, deixá-lo em execução e entrar no telefone Android paraConfigurações ->Configurações de wifi. ao ir para lá, de repente a Lista está sendo atualizada eonReceive é chamado.

Qual é o problema aqui?

FazwifiManager.startScan(); executa a verificação apenas uma vez? ou é uma função que continua ouvindo os "Resultados da verificação" recebidos?

E, obviamente, por que o receptor não é chamado?

questionAnswers(1)

yourAnswerToTheQuestion