Android 11无法同时使用WiFi与Ethernet导致本地API访问异常求助
Android 11 同时连接以太网与WiFi解决方案
问题根因
Android 11 默认网络优先级规则为WiFi > 以太网,当WiFi连接成功后,系统会将全局默认路由绑定到WiFi接口,以太网接口仅保留链路层连接,不会处理除同网段ARP之外的流量,因此无法访问以太网侧的本地API。
你之前参考的旧帖是针对Android 4.x~9.x的方案,Android 10之后系统修改了网络路由的权限逻辑,原来的配置修改入口已经被移除或隐藏,所以找不到对应选项是正常情况。
无Root可行方案
- 自行开发访问以太网API的应用时,调用系统
ConnectivityManager的requestNetwork方法指定以太网传输类型,绑定对应网络后发起请求即可,适配Android 11的示例代码如下:
val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_ETHERNET) .build() // 注册网络回调 connectivityManager.requestNetwork(request, object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { super.onAvailable(network) // 访问以太网API时使用返回的network对象发起请求 // 示例OkHttp配置:client.newBuilder().socketFactory(network.socketFactory).build() } })
- 全局保留以太网本地网段路由时,打开开发者选项,在「网络」分类下找到「多网络共存」(部分厂商ROM命名为「以太网路由优先级」),开启后系统会同时保留WiFi和以太网的路由表。
- 找不到对应开关时可以通过ADB命令临时生效:
- 开启设备的USB调试,连接电脑后执行
adb shell进入设备命令行 - 执行
ip route show查看所有路由信息,记录以太网接口(通常命名为eth0/eth1)对应的本地网段,例如192.168.2.0/24 - 手动添加静态路由:
ip route add 192.168.2.0/24 dev eth0 table 1000(替换为实际的网段和接口名) - 配置路由规则:
ip rule add to 192.168.2.0/24 lookup 1000 priority 1000
- 开启设备的USB调试,连接电脑后执行
注意:ADB配置的规则重启设备后会失效,需要重新执行命令。
Root永久生效方案
- 修改系统开机初始化脚本:挂载
/system分区可写,在/system/etc/init/目录下的网络启动脚本的on boot段添加上述ADB路由命令,开机自动执行。 - 安装Magisk模块「Multi Network Enabler」,刷入后开启对应开关即可自动适配双网络共存规则,无需手动配置路由。
内容的提问来源于stack exchange,提问作者DAVID PAOLO RAMIREZ MORALES
相关产品推荐
相关产品推荐

