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?