WifiInfo.getBSSID () возвращает только ноль, несмотря на то, что телефон подключен - PullRequest
3 голосов
/ 12 апреля 2020

Мне нужно найти MacAddress точки доступа, к которой я подключен. Провел некоторое исследование, наконец, чтобы сделать это, я использовал фрагмент из следующего потока: Wifi getSSID () возвращает ноль

Код выглядит следующим образом:

String mac = "02:00:00:00:00:00";
WifiManager wifiMgr = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
       while(mac.equals("02:00:00:00:00:00")) {
             WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
             mac = wifiInfo.getBSSID();
             Log.d("Wifi", "WifiInfo : " + wifiInfo.toString());
          }
Log.d("Wifi", "YAY!" + mac);

(Я написал это так, что если по какой-то причине он возвращает ноль, он будет повторять его, пока не вернет что-то другое, потому что согласно некоторым ответам это не всегда соответствует)

к сожалению, вывод th ie всегда: D/Wifi: WifiInfo: SSID: , BSSID: 02:00:00:00:00:00, MAC: 02:00:00:00:00:00, Supplicant state: COMPLETED, RSSI: -74, Link speed: 58Mbps, Tx Link speed: 58Mbps, Rx Link speed: -1Mbps, Frequency: 2412MHz, Net ID: -1, Metered hint: false, GigaAp: false, VenueName: null, WifiMode: 4, HotspotLiveAp: false, score: 55

Манифест имеет необходимые разрешения (в зависимости от пары потоков может что-то упустить):

<uses-permission android:name = "android.permission.ACCESS_WIFI_STATE" android:required="true" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" android:required="true" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:required="true" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:required="true" />
<uses-permission android:name="android.permission.INTERNET" android:required="true" />

Чтобы узнать, не является ли проблема внешней, я загрузил WifiAnalyzer на свой телефон, но он правильно показывает ма c точки доступа рядом со мной, а также ту, к которой я подключен при запуске моего приложения, так что проблема не может быть в настройках точки доступа или что-то в этом роде.

Несколько потоков обсуждали похожие, если не идентичные проблемы: Wifi getSSID () возвращает ноль Почему WifiConfiguration.BSSID всегда равен NULL? Как получить BSSID из Все точки доступа Wi-Fi?

Но они либо не получили ответа, либо сосредоточены на другом аспекте проблемы, либо ответ не работает, но все они довольно старые.

TL; DR Я хочу ма c адрес точки доступа, к которой подключен мой телефон, но getBSSID () всегда возвращает ноль.

1 Ответ

0 голосов
/ 12 апреля 2020

Ну, получается, что ответ не в коде. Независимо от ваших разрешений, в android 10 вам нужно go в настройки и разрешить вашему приложению доступ к местоположению, в противном случае getBSSID () вернет «02: 00: 00: 00: 00: 00», так что если вы хотите это должно быть сделано автоматически, через приложение, а не вручную на заседаниях, вам нужно добавить всплывающее окно разрешения, которое изменит настройки устройства. Что касается того, как это сделать, я уверен, что есть учебники, тем временем моя проблема была решена.

...