在android nougat中扫描WiFi列表返回0

在android nougat中扫描WiFi列表返回0,android,android-wifi,android-7.0-nougat,Android,Android Wifi,Android 7.0 Nougat,我正在为Android牛轧糖构建代码 我已在清单文件中授予位置和WiFi权限,但我从wlan_Manager.getScanResults获得0 我的代码片段是 wlan_Manager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); wlan_switch = (Switch)findViewById(R.id.switch1); list = (ListView)f

我正在为Android牛轧糖构建代码

我已在清单文件中授予位置和WiFi权限,但我从wlan_Manager.getScanResults获得0

我的代码片段是

wlan_Manager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
    wlan_switch = (Switch)findViewById(R.id.switch1);
    list = (ListView)findViewById(R.id.listview);

wlan_switch.setChecked(wlan_Manager.isWifiEnabled());

wifi_list = new ArrayList<>();

adapter = new Adapter(this,R.layout.default_listview,wifi_list);
list.setAdapter(adapter);
wifireceiver = new wifi_Receiver(adapter,wifi_list);

registerReceiver(wifireceiver,new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));


但是,当我为较低版本的android构建代码时,它会显示WiFi列表。

在开始任何扫描之前,您正在调用getScanResults。 对于您的用例,您需要使用startScan方法启动wifi扫描,并注册一个BroadcastReceiver,该接收器通过以下操作过滤意图:

WifiManager.SCAN_RESULTS_AVAILABLE_ACTION
在这里,您可以找到一些示例代码:
这是安卓7.x版本中的一个问题。存在两种解决方案:

将设备的版本更新为8。 编辑targetSdkVersion 22的build.gradle
我使用了相同的。@重写ReceiveContext上下文上的public void,Intent{int size=0;wlan\u Manager=WifiManagercontext.getApplicationContext.getSystemServicecontext.WIFI\u服务;scan\u Result=wlan\u Manager.getScanResults;size=scan\u Result.size;Log.dTAG,onReceive:+size;而size>0{size-;wifi_list.addscan_Result.getsize.SSID;adapter.notifyDataSetChanged;}}我拥有所有的权限,但对我来说wifiManager.startScan没有做任何事情,getScanResults返回0,直到我将Android Pie9的targetSdkVersion更改为22
 @Override
    public void onReceive(Context context, Intent intent)
    {
            int size =0 ;
            //scan_Result.clear();
            Log.d("WifScanner", "onReceive");
            wlan_Manager = (WifiManager)context.getApplicationContext().getSystemService(context.WIFI_SERVICE);
            scan_Result = wlan_Manager.getScanResults();
            size = scan_Result.size();

            Log.d(TAG, "onReceive: " + size);

            while (size > 0)
            {
                Log.d(TAG, "size : "+size);
                size--;
                wifi_list.add(scan_Result.get(size).SSID);
                adapter.notifyDataSetChanged();
            }
    }
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION