You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:01:13