【发布时间】:2020-07-25 01:24:47
【问题描述】:
我需要找到我所连接的 AP 的 MacAddress。做了一些研究,最后我使用了来自以下线程的 sn-p:Wifi getSSID() returns null
代码如下所示:
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: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 到我的手机,但它正确显示了我附近的 AP 的 mac 以及我在运行我的应用程序时连接的那个,所以问题不能在 AP 设置中或其他任何内容中。
多个线程讨论了类似但不相同的问题: Wifi getSSID() returns null Why WifiConfiguration.BSSID is always null? How to get BSSID of all wifi access points?
但要么没有答案,要么专注于问题的不同方面,要么答案不起作用,而且它们都相当老了。
TL;DR 我想要手机连接的AP的mac地址,但是getBSSID()总是返回null。
【问题讨论】:
标签: java android android-wifi wifimanager