安卓代碼控制WiFi連接適配備忘

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 + "\"";加雙引號的就是不行
目前原因尚不明確,所以先記錄下來!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容