Android 13及以上版本WPA2-EAP/WPA3-EAP连接失败求助
Android 13+ EAP WiFi连接失败(addNetwork返回-1)解决方案
你的问题本质是Android 13及以上版本对企业级WiFi的配置逻辑做了严格变更,旧的WifiConfiguration API在处理EAP类型网络时不再兼容,导致addNetwork始终返回-1,而PSK/WEP这类简单认证的网络受影响较小。
核心原因
- Android 13+ 收紧了EAP WiFi的参数校验,旧API的配置方式缺少系统要求的隐性校验项,直接被拒绝
- Google从Android 10开始就推荐用新的网络连接API替代
addNetwork,Android 13进一步限制了旧API在企业WiFi场景的可用性
解决办法:改用新API实现EAP连接
直接用WifiNetworkSpecifier结合ConnectivityManager的方式,这是Android 13+官方推荐的企业WiFi连接方案:
1. 先加必要权限(AndroidManifest.xml)
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- Android 12+ 必须加这个权限 --> <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" />
2. 替换旧代码的Kotlin实现
val connectivityManager = applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager // 构建EAP认证配置 val enterpriseConfig = WifiEnterpriseConfig.Builder() .setEapMethod(WifiEnterpriseConfig.Eap.PEAP) .setPhase2Method(WifiEnterpriseConfig.Phase2.MSCHAPV2) .setIdentity("test") .setPassword("123456") .build() // 定义WiFi网络规格 val wifiNetworkSpecifier = WifiNetworkSpecifier.Builder() .setSsid(ssid) .setHiddenSsid(true) .setWpa2EnterpriseConfig(enterpriseConfig) .build() // 构建网络请求 val networkRequest = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .setNetworkSpecifier(wifiNetworkSpecifier) .build() // 发起连接并监听结果 connectivityManager.requestNetwork(networkRequest, object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { super.onAvailable(network) Log.d("WIFI", "EAP WiFi连接成功") // 可选:把当前应用绑定到这个网络 connectivityManager.bindProcessToNetwork(network) } override fun onUnavailable() { super.onUnavailable() Log.d("WIFI", "EAP WiFi连接失败") } })
额外提示
- 如果要兼容Android 12及以下,加版本判断:
Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU时用新API,否则保留旧逻辑 - 新API不需要手动调用
saveConfiguration,系统会自动管理配置 - 必须确保用户授予了位置权限(Android 6+连接WiFi,尤其是隐藏SSID的网络,强制要求位置权限)
内容的提问来源于stack exchange,提问作者Conqueror
相关产品推荐
相关产品推荐

