Как получить список названий сети Wi-Fi - PullRequest
0 голосов
/ 18 июня 2020

Как получить список имен Wi-Fi сети и сигнала

Я использовал следующий метод для заполнения массива. Работает только на Android версиях меньше 5. и не работает на 6 и выше. Мне нужен код, работающий во всех версиях.

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

List myListrow = new List();

        var wifiMgr = (WifiManager)GetSystemService(WifiService);
        var wifiList = wifiMgr.ScanResults;

        foreach (var item in wifiList)
        {
            var wifiLevel = WifiManager.CalculateSignalLevel(item.Level, 100);
             myListrow.Add(($"Wifi Name: {item.Ssid} - Single: {wifiLevel}"));

        }

1 Ответ

1 голос
/ 18 июня 2020

Обновление:

Добавьте разрешение permission.ACCESS_COARSE_LOCATION. Исходный код работает хорошо.

Код, используемый для перечисления всех имен:

void getWifiList() {

        IList myListrow = new ArrayList();

        var wifiMgr = (WifiManager)GetSystemService(WifiService);
        var wifiList = wifiMgr.ScanResults;

        foreach (var item in wifiList)
        {
            var wifiLevel = WifiManager.CalculateSignalLevel(item.Level, 100);
            myListrow.Add(($"Wifi Name: {item.Ssid} - Single: {wifiLevel}"));

        }

    }

Код для запроса разрешения:

 private void RequestPermission()
    {
        Log.Info(TAG, " permission has NOT been granted. Requesting permission.");

        if (ActivityCompat.ShouldShowRequestPermissionRationale(this, Manifest.Permission.AccessCoarseLocation))
        {

            Snackbar.Make(layout, Resource.String.permission_accesscoarselocation_rationale,
                Snackbar.LengthIndefinite).SetAction(Resource.String.ok, new Action<View>(delegate (View obj) {
                    ActivityCompat.RequestPermissions(this, new String[] { Manifest.Permission.AccessCoarseLocation }, REQUEST_LOCATION);
                })).Show();
        }
        else
        {
            // AccessCoarseLocation permission has not been granted yet. Request it directly.
            ActivityCompat.RequestPermissions(this, new String[] { Manifest.Permission.AccessCoarseLocation }, REQUEST_LOCATION);
        }
    }

Снимок экрана:

enter image description here

Вы можете скачать исходный файл по ссылке ниже. https://github.com/WendyZang/Test/tree/master/Wi-Fi%20network/GetNetWorkInfo

...