如何检查WiFi是否存在



如何检查我输入的WiFi名称是否存在于我所在的区域中?

这个想法是从WiFi网络中获取名称,将它们与我输入的名称进行比较并返回布尔值。

这是我使用的代码总是返回false。

wifiMgr = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiReciever = new WifiScanReceiver();
registerReceiver(wifiReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
wifiMgr.startScan();

private class WifiScanReceiver extends BroadcastReceiver {
        public void onReceive(Context c, Intent intent) {
            List<ScanResult> wifiScanList = wifiMgr.getScanResults();
            wifis = new String[wifiScanList.size()];
            for (int i = 0; i < wifiScanList.size(); i++) {
                wifis[i] = wifiScanList.get(i).toString();
            }
        }
    }

private boolean doesWifiExist(String string){
        String[] array = string.split(" ");
        String wifi = array[0];
        boolean flag = false;
        for (int i = 0; i < wifis.length; i++) {
            if(wifis[i].equals(wifi)){
                flag = true;
                break;
            }
        }
        return flag;
    }

这是我添加的代码,以及我使用的清单中的权限

public boolean isInternetPermissionGranted() {
        if (Build.VERSION.SDK_INT >= 23) {
            if (checkSelfPermission(Manifest.permission.ACCESS_WIFI_STATE)
                    == PackageManager.PERMISSION_GRANTED) {
                Log.v("PermissionGranted", "Permission is granted");
                return true;
            } else {
                Log.v("PermissionGranted", "Permission is revoked");
                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_WIFI_STATE}, 1);
                return false;
            }
        } else { //permission is automatically granted on sdk<23 upon installation
            Log.v("PermissionGranted", "Permission is granted");
            return true;
        }
    }


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

它返回false可能是因为wifiScanList是空的。确保您明确要求对新的API征求许可,并确保启用WiFi

首先确保您有<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"

另外,我相信如果您在上面,API> = 23(或棉花糖,如果API不同),则需要致电requestPermission(new String[] {Manifest.permission.ACCESS_WIFI_STATE})这也可以用于请求多个权限,只需通过逗号将它们分开。

也可以通过致电检查许可状态 checkSelfPermission(PERMISSION) == PackageManager.PERMISSION_DENIED权限等于您尝试检查的权限。

相关内容

最新更新