1、獲取WiFi列表為空
部分手機使用以下代碼獲取WiFi列表,結(jié)果為空;
// 得到掃描wifi列表結(jié)果
mWifiList = mWifiManager.getScanResults();
而打開手機的GPS之后,可以獲取到完整的WiFi列表。
原因如下:
Android6.0(API level 23)在系統(tǒng)和API上都有著諸多的改變,為了更好的保護用戶的數(shù)據(jù),Android移除了從代碼中通過Wi-Fi和藍牙的API訪問設(shè)備本地網(wǎng)絡(luò)標識符。因此WifiInfo.getMacAddress()和BluetoothAdapter.getAddress()將始終返回02:00:00:00:00:00
而為了能夠通過Wi-Fi和藍牙掃描時,獲取周邊設(shè)備的硬件標識符,應(yīng)用必須具有ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION權(quán)限:
WifiManager.getScanResults()
BluetoothDevice.ACTION_FOUND
BluetoothLeScanner.startScan()
更多相關(guān)內(nèi)容可【點擊這里】查看!
2、使用WiFi名稱字符串連接失敗
目前網(wǎng)上的寫法都是config.SSID = "\"" + SSID + "\"";這種價雙引號的,在華為Mate 9上是連接失?。?而去掉雙引號的寫法可以連接成功,而且測試另外三星s7 Edge也是可以的,如下:
WifiConfiguration config = new WifiConfiguration();
config.allowedAuthAlgorithms.clear();
config.allowedGroupCiphers.clear();
config.allowedKeyManagement.clear();
config.allowedPairwiseCiphers.clear();
config.allowedProtocols.clear();
config.SSID = SSID;//"\"" + SSID + "\"";加雙引號的就是不行