我需要找到我连接的AP的Mac地址。做了一些研究,最终我使用了以下线程中的片段来完成这个任务:Wifi getSSID() returns null
代码如下:
我这样写是为了如果出现返回 null 的情况,它会重新执行,直到返回其他内容,因为根据一些答案,它并不总是一致的。
不幸的是,该输出始终为:
为了确认问题是否源于外部,我在手机上下载了一个WifiAnalyzer,但是它能正确显示我附近的AP的mac地址以及当我运行我的应用程序时所连接的那个AP的mac地址,因此问题不可能出现在AP设置或其他任何地方。
多个帖子讨论了类似的问题,如果不是完全相同的问题: Wifi getSSID() 返回 null 为什么 WifiConfiguration.BSSID 总是 null? 如何获取所有 wifi 接入点的 BSSID? 但它们要么没有得到解答,要么关注问题的不同方面,或者答案不起作用,而且它们都比较旧。
简而言之,我想要知道手机连接的AP的mac地址,但是 getBSSID() 总是返回 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的mac地址,因此问题不可能出现在AP设置或其他任何地方。
多个帖子讨论了类似的问题,如果不是完全相同的问题: Wifi getSSID() 返回 null 为什么 WifiConfiguration.BSSID 总是 null? 如何获取所有 wifi 接入点的 BSSID? 但它们要么没有得到解答,要么关注问题的不同方面,或者答案不起作用,而且它们都比较旧。
简而言之,我想要知道手机连接的AP的mac地址,但是 getBSSID() 总是返回 null。