如何配置Android设备优先使用移动数据而非以太网网络?
配置Android设备优先使用蜂窝数据上网(保留以太网ADB连接)
你需要让Android系统优先选择rmnet_data0(蜂窝数据接口)作为互联网访问的默认接口,同时保留以太网(eth0)用于ADB连接,以下是几种可行的方案:
方案一:直接修改路由表(最直接的Linux内核级方式)
Android基于Linux内核,可通过调整路由表指定默认路由走向蜂窝接口:
- 查看当前默认路由(确认是否存在以太网的默认路由):
adb shell ip route show default - 删除以太网的默认路由(如果默认路由指向
eth0):adb shell ip route del default dev eth0 - 添加蜂窝接口的默认路由,并设置更低的metric值(数值越小优先级越高):
先获取蜂窝数据的网关地址:
找到输出中的adb shell ip neigh show dev rmnet_data0gateway条目,假设网关为10.76.204.249,执行:
若不确定网关,也可直接绑定接口(部分设备支持):adb shell ip route add default via 10.76.204.249 dev rmnet_data0 metric 10adb shell ip route add default dev rmnet_data0 metric 10 - 验证配置:执行
adb shell ip route show default,确认默认路由指向rmnet_data0即可。
方案二:利用Android系统的网络优先级设置
Android的ConnectivityService会根据网络评分选择默认网络,可通过命令直接指定蜂窝网络为默认:
- 列出当前所有网络,找到蜂窝数据对应的NetId:
输出中标记为adb shell cmd connectivity networksTYPE_MOBILE的条目,对应的数字即为蜂窝网络的NetId。 - 设置该蜂窝网络为默认网络:
例如NetId为5,执行adb shell cmd connectivity set-default-network <NetId>adb shell cmd connectivity set-default-network 5。
方案三:调整网络评分(进阶方式)
如果上述方法无效,可通过提升蜂窝数据的网络评分,让系统自动优先选择它:
执行以下命令(不同Android版本的方法调用号可能略有差异,以下以Android 10+为例):
adb shell service call connectivity 39 i32 <蜂窝NetId> i32 10000
这里的39是setNetworkPreference方法的调用号,10000是设置的高分值(以太网默认评分通常为9000左右),确保蜂窝数据评分高于以太网即可。
注意:以上操作需要设备具备root权限,或你的ADB连接拥有足够的系统权限(部分测试设备默认开放)。
内容的提问来源于stack exchange,提问作者David Chouinard
相关产品推荐
相关产品推荐

