IPhone手机热点无法连接

原因

旧安卓设备(Android10)无法连接iPhone手机的热点是因为iPhone手机在更新了iOS 15之后采用了一种新的加密协议,即SAE。旧安卓设备只能够解码WPA和WPA2的Wi-Fi加密协议, 所以才无法连接。

方案

仅想连接:可以通过其他App去连接,如下载一个wifi万能钥匙。

功能支持通过修改连接安全配置【项目亲测】:

override fun connect(
        wlanAp: WlanAp, password: String, onSuccess: (() -> Unit)?, onFailure: (() -> Unit)?
    ) {
        mConnectingAp = wlanAp
        connectTimes = 0
        TAG.i("WLAN-connect-mConnectingAp = $mConnectingAp")
        val listener = object : BaseCarWifi.ActionListener {
            override fun onSuccess() {
                TAG.i("WLAN-connect-success-onSuccess=${onSuccess},wlanAp=$wlanAp ")
                onSuccess?.invoke()
            }
            override fun onFailure(p0: Int) {
                TAG.i("WLAN-connect-failure-wlanAp= $wlanAp")
            }
        }
        if (wlanAp.findReallyAP() == null) {
            TAG.i("WLAN-connect-error-not execute--findReallyAP==null")
        }
        wlanAp.findReallyAP()?.let {
            TAG.i("security------------>${it.security}")
            if (it.security == 5){
                TAG.i("SAE------------")
                val wificonfiguration =  if (it.config != null){
                    it.config
                }else{
                    WifiConfiguration()
                }
                wificonfiguration.SSID = BaseAccessPoint.convertToQuotedString(it.ssidStr)
                wificonfiguration.hiddenSSID = true
                wificonfiguration.setSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE)
                TAG.i("wificonfiguration ---> password:${wificonfiguration.preSharedKey}")
                if (password.isNotEmpty()){
                    wificonfiguration.preSharedKey = '"' + password + '"'
                }else{
                    TAG.i("connect wlanAp = password is null,已保存再次点击过来非传入")
                }
                val netId = mWifiManager.addNetwork(wificonfiguration)
                mWifiManager.saveConfiguration()
                mWifiManager.enableNetwork(netId,true)
                TAG.i("connect netId = $netId,wificonfiguration:${wificonfiguration}")
            }else  if (wlanAp.status == WlanStatus.Saved) {
                //这个取消保存的同时去点击连接内部aar报空指针,所以加个判断
                TAG.i("WLAN-connect-Saved= wlanAp.status==WlanStatus.Saved")
                if (it.config != null) {
                    TAG.i("WLAN-connect-Saved-executeToWifi-BaseAccessPoint=${it}")
                    mCarWifi.connectToWifi(it, listener)
                    TAG.i("WLAN-connect-Saved-executeToWifi2-BaseAccessPoint=${it}")
                } else {
                    TAG.i("WLAN-connect-Saved-not execute = config is null")
                }
            } else if (wlanAp.isOpen) {
                TAG.i("WLAN-connect-not Saved-open-executeConnectToPublicWifi")
                mCarWifi.connectToPublicWifi(it, listener)
            } else {
                TAG.i("WLAN-connect-not Saved-not open-executeConnectToNewWifi")
                mCarWifi.connectToNewWifi(it, password)
            }
        }
    }
小贴士

1、查看连接的热点安全类型:

logcat | grep connectToNetwork 
10-07 14:00:51.848  1270  1525 D SupplicantStaIfaceHal: connectToNetwork "iPhone"SAE,"12345678"
10-14 21:52:57.585  1270  1525 D SupplicantStaIfaceHal: connectToNetwork "iPhone"SAE,"12345678"

2、BSSID是搜索出来的热点地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值