安卓代码控制WiFi连接适配备忘

2017-10-11  本文已影响0人  方凌川

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 + "\"";加双引号的就是不行
目前原因尚不明确,所以先记录下来!
上一篇下一篇

猜你喜欢

热点阅读