Nenhuma resposta recebida no método winscan no WifiManager no Android 8 Oreo

De acordo com a documentação oficial do Android, o método startScan no WifiManager foi preterido no nível de API P. No entanto, estou tentando usar esse método no nível de API 26 (anterior a P) sem êxito. Eu desenvolvi um aplicativo que requer a verificação das redes Wi-Fi, se o usuário concordar com as permissões necessárias, e esse comportamento é fundamental para o funcionamento adequado do aplicativo. No entanto, não recebo resposta ao chamar o método startScan. ¿Alguém pode me ajudar a resolver esse problema ou encontrar uma solução alternativa?

Este é um link para a documentação.https://developer.android.com/reference/android/net/wifi/WifiManager.html#startScan ()

Felicidades

EDITAR:

Este é o código para iniciar o processo de digitalização:

public boolean startScan() {
   WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
   if (!wm.isWifiEnabled()) {
     try {
       wm.setWifiEnabled(true);
     } catch (SecurityException e) {
       Log.w(LOG_TAG, "Error enabling wifi", e);
       return false;
     }
   }
   boolean started = wm.startScan();
   Log.d(LOG_TAG, "Scan started? " + started);
   return started;
}

E este é o BroadcastReceiver que recebe o resultado da verificação. Funciona exceto no Android 8 com targetSdkVersion 26+

public class InOutWifiScanResultsReceiver extends BroadcastReceiver {
   private static final String LOG_TAG = "ScanResults";

   @Override
   public void onReceive(Context context, Intent intent) {
     super.onReceive(context, intent); // Never called in Android 8 and targetSdkVersion 26+
     List<ScanResult> results = getWifiResults(context);
     Log.d(LOG_TAG, "Received results (" +  results.size() + " AP's)");
   }

   private static List<ScanResult> getWifiResults(Context context) {
      WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
      try {
        return wm.getScanResults();
      } catch (SecurityException e) {
        return new ArrayList<>();
      }
   }
}

No manifesto, usamos as permissões permitidas e o BroadcastReceiver declarou:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

 <receiver
    android:name=".InOutWifiScanResultsReceiver"
    android:exported="false">
    <intent-filter>
        <action android:name="android.net.wifi.SCAN_RESULTS"/>
    </intent-filter>
 </receiver>

A permissão de localização é necessária em tempo de execução, por isso tenho certeza de que é permitida. Também sou verdade que a localização está ativa (nível GPS).

O BroadcastReceiver funciona bem porque a compilação com targetSdkVersion = 25 ou menos sempre funciona conforme o esperado e as verificações são recebidas. Também testei com o android: exported = "true", mas não tem influência nos resultados.

Agradeço sua ajuda.

questionAnswers(1)

yourAnswerToTheQuestion