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

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 + "\"";加双引号的就是不行
目前原因尚不明确,所以先记录下来!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容