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

Android 9系统中如何设置WiFi优先级高于以太网

Android 9(API 28)设置WiFi优先级高于以太网的解决方案

场景1:定制ROM全局修改优先级

第一步:修正config.xml配置

你之前配置不生效的核心原因是搞反了networkAttributes中优先级数值的规则:数值越大,网络优先级越高。你将以太网的优先级设为9、WiFi设为1,自然以太网优先级更高。
修改frameworks/base/core/res/res/values/config.xml中的对应配置:

<string-array translatable="false" name="networkAttributes">
        <!-- 第二个参数为基础优先级,设为高于以太网的值即可 -->
        <item>"wifi,15,1,2,6000,true"</item>
        <item>"ethernet,5,9,0,6000,true"</item>
</string-array>

修改后全编译ROM刷入设备即可生效,单独替换framework-res.apk可能因签名、权限问题不生效。

第二步:兜底修改ConnectivityService逻辑

如果修改config.xml后仍不生效,可直接修改系统服务的评分逻辑:
找到frameworks/base/services/core/java/com/android/server/ConnectivityService.java,在网络评分计算的逻辑分支中,强制同条件下WiFi的最终评分比以太网高20分以上,即可保证WiFi优先被选作默认网络。

场景2:单个应用优先使用WiFi

不需要修改系统源码,直接用Android 9官方推荐的NetworkRequest替代已废弃的接口即可实现:

  1. 先在AndroidManifest.xml中申请权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
  1. 代码中注册网络回调,绑定进程默认网络为WiFi:
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
// 构建仅匹配WiFi的网络请求
NetworkRequest wifiRequest = new NetworkRequest.Builder()
        .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
        .build();

ConnectivityManager.NetworkCallback wifiCallback = new ConnectivityManager.NetworkCallback() {
    @Override
    public void onAvailable(@NonNull Network network) {
        super.onAvailable(network);
        // 将当前进程的所有网络请求默认路由到WiFi
        ConnectivityManager.setProcessDefaultNetwork(network);
    }
};
// 注册回调监听WiFi状态
cm.registerNetworkCallback(wifiRequest, wifiCallback);

不需要的时候调用cm.unregisterNetworkCallback(wifiCallback)注销回调即可。

内容的提问来源于stack exchange,提问作者Sourabrt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:36:04