android 获取wifi列表

获取WiFi列表方法:创建WifiManager,通过manager对象的getScanResults获取搜索到的结果,直接贴代码。

    public List getWifiList() {
        WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
        List scanWifiList = wifiManager.getScanResults();
        List wifiList = new ArrayList<>();
        if (scanWifiList != null && scanWifiList.size() > 0) {
            HashMap signalStrength = new HashMap();
            for (int i = 0; i < scanWifiList.size(); i++) {
                ScanResult scanResult = scanWifiList.get(i);
                Log.e(ConstantUtils.TAG, "搜索的wifi-ssid:" + scanResult.SSID);
                if (!scanResult.SSID.isEmpty()) {
                    String key = scanResult.SSID + " " + scanResult.capabilities;
                    if (!signalStrength.containsKey(key)) {
                        signalStrength.put(key, i);
                        wifiList.add(scanResult);
                    }
                }
            }
        }else {
            Log.e(ConstantUtils.TAG, "没有搜索到wifi");
        }
        return wifiList;
    }

搜索的代码就是这些,很简单。但是在6.0以上的手机上可能wifiManager.getScanResults()方法获取的集合大小就为0。
原因就是权限的问题,获取wifi在6.0以上是需要定位权限的。

	 private void registerPermission(){
	 	//动态获取定位权限
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(
                Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[] { Manifest.permission.ACCESS_COARSE_LOCATION },
                    100);

        } else {
            getWifiList();
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                           @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == 100) {
            getWifiList();
        }
    }

但是,但是,在小米手机上可能还是不行,获取到的wifi列表大小还是为0。原因在于
android 获取wifi列表_第1张图片
小米手机的启用MIUI优化这个设置。
如果你关闭了这个设置可能就会获取不到wifi列表。开启这个设置再重启手机后就行了。

你可能感兴趣的:(andorid)