Android系统下如何同时启用WiFi与LTE网络?
在Android中同时使用WiFi与LTE网络的完整实现方案
我明白你现在的处境——已经能在WiFi活跃时让请求走LTE,但还没真正实现双网并行使用。其实你当前的代码只是搭了个基础框架,还缺关键的网络实例绑定和请求分发逻辑,我来帮你补全整个流程:
第一步:完善网络请求配置与回调注册
首先你需要明确指定要获取蜂窝(LTE)网络,并注册回调拿到可用的LTE网络实例:
private static ConnectivityManager cm; private static NetworkRequest networkRequest; private static NetworkCallback networkCallback; private Network lteNetwork; // 保存可用的LTE网络实例 // 初始化双网管理逻辑 public static void initDualNetwork(Context context) { cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); // 构建仅匹配LTE网络的请求 networkRequest = new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) // 锁定蜂窝网络 .build(); // 注册回调监听LTE网络状态 networkCallback = new NetworkCallback() { @Override public void onAvailable(Network network) { super.onAvailable(network); lteNetwork = network; Log.d("DualNetwork", "LTE网络已就绪,可用于发送请求"); } @Override public void onLost(Network network) { super.onLost(network); if (network.equals(lteNetwork)) { lteNetwork = null; Log.d("DualNetwork", "LTE网络已断开"); } } }; cm.registerNetworkCallback(networkRequest, networkCallback); }
第二步:实现双网并行的请求分发
Android默认会优先使用WiFi(优先级更高),所以要让特定请求走LTE,需要显式用LTE网络实例打开连接,而其他请求会自动走WiFi,这样就实现了双网同时使用:
// 用LTE网络发送指定请求的方法 public void sendRequestViaLTE(String targetUrl) { if (lteNetwork == null) { Log.e("DualNetwork", "当前无可用LTE网络,请检查蜂窝网络状态"); return; } try { URL url = new URL(targetUrl); // 核心操作:用LTE网络实例创建连接,该请求会强制走LTE HttpURLConnection connection = (HttpURLConnection) lteNetwork.openConnection(url); // 常规请求配置 connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); // 处理响应 int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder responseContent = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { responseContent.append(line); } reader.close(); Log.d("DualNetwork", "LTE请求响应内容:" + responseContent.toString()); } connection.disconnect(); } catch (IOException e) { e.printStackTrace(); Log.e("DualNetwork", "LTE请求发送失败:" + e.getMessage()); } }
必要的权限与版本说明
- 权限配置:在
AndroidManifest.xml中添加以下权限:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> - 版本兼容:
NetworkCallback是API 21(Android 5.0)才引入的,若需兼容更低版本,建议做版本判断或使用AndroidX兼容库。
收尾:避免内存泄漏
在页面销毁或不再需要双网功能时,记得注销网络回调:
public static void releaseDualNetwork() { if (cm != null && networkCallback != null) { cm.unregisterNetworkCallback(networkCallback); } }
这样一来,WiFi会保持正常连接用于常规网络操作,而你调用sendRequestViaLTE的请求会单独走LTE,真正实现了双网同时使用的效果。
内容的提问来源于stack exchange,提问作者Jin
相关产品推荐
相关产品推荐

