1、获取WiFi列表为空
部分手机使用以下代码获取WiFi列表,结果为空;
// 得到扫描wifi列表结果
mWifiList = mWifiManager.getScanResults();
而打开手机的GPS之后,可以获取到完整的WiFi列表。
原因如下:
Android6.0(API level 23)在系统和API上都有着诸多的改变,为了更好的保护用户的数据,Android移除了从代码中通过Wi-Fi和蓝牙的API访问设备本地网络标识符。因此WifiInfo.getMacAddress()和BluetoothAdapter.getAddress()将始终返回02:00:00:00:00:00
而为了能够通过Wi-Fi和蓝牙扫描时,获取周边设备的硬件标识符,应用必须具有ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION权限:
WifiManager.getScanResults()
BluetoothDevice.ACTION_FOUND
BluetoothLeScanner.startScan()
更多相关内容可【点击这里】查看!
2、使用WiFi名称字符串连接失败
目前网上的写法都是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 + "\"";加双引号的就是不行