Java WifiInfo.getBSSID()仅返回null,尽管手机已连接

Java WifiInfo.getBSSID()仅返回null,尽管手机已连接,java,android,android-wifi,wifimanager,Java,Android,Android Wifi,Wifimanager,我需要找到我连接的AP的MAC地址。做了一些研究,最后我使用了以下线程中的一个片段: 代码如下所示: 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 wif

我需要找到我连接的AP的MAC地址。做了一些研究,最后我使用了以下线程中的一个片段:

代码如下所示:

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);
(我这样写的,如果出于某种原因它返回null,它将重做它,直到它返回其他内容,因为根据一些答案,它并不总是一致的)

不幸的是,输出总是:
D/Wifi:WifiInfo:SSID:,BSSID:02:00:00:00,MAC:02:00:00:00:00:00,请求状态:已完成,RSSI:-74,链路速度:58Mbps,发送链路速度:58Mbps,接收链路速度:-1Mbps,频率:2412MHz,网络ID:-1,计量提示:false,GigaAp:false,VenueName:null,WifiMode:4,HotspotLiveAp:false,分数:55

清单具有必要的权限(根据几个线程,可能缺少某些内容):


为了确定问题是否是外部的,我在手机上下载了一个WifiAnalyzer,但它正确地显示了我附近AP的mac以及我运行应用程序时连接到的mac,因此问题不可能出现在AP设置或其他方面

讨论的多个线程存在类似(如果不相同)的问题:

但他们要么没有回答,要么专注于问题的另一个方面,要么答案不起作用,而且他们都相当老了

TL;博士
我想要我的手机连接到的AP的mac地址,但是getBSSID()总是返回空值。

事实证明,答案不在代码中。无论您的权限如何,在android 10中,您都需要进入设置并允许您的应用程序访问位置,否则getBSSID()将返回“02:00:00:00:00”,因此,如果您希望通过应用程序自动完成此操作,而不是在坐姿中手动完成此操作,则需要添加权限弹出窗口以更改设备设置。至于如何做到这一点,我肯定有教程,同时我的问题也解决了

<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" />