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

Android连WiFi时TRANSPORT_CELLULAR不可用及幽灵蜂窝网络问题咨询

Android 12(Galaxy S10)WiFi连接后蜂窝网络消失及“幽灵网络”问题解析

问题现象

  • 设备连接WiFi后,蜂窝网络指示灯亮着,但实际完全无法使用
  • 代码指定监听蜂窝网络(TRANSPORT_CELLULAR)却无回调,调用connectivityManager.allNetworks仅能找到WiFi网络
  • 存在一个ID与实际蜂窝网络不同的“幽灵蜂窝网络”,具备valid和internet能力,但无法建立连接,也不会触发registerNetworkCallback回调

涉及代码片段

val request = NetworkRequest.Builder().run {
    addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
    build()
}

connectivityManager.registerNetworkCallback(request, callback)

设备与配置信息

  • targetSdkVersion: 29
  • 设备:Galaxy S10(Android 12)

原因解析

1. 蜂窝网络“消失”的核心原因

从Android 10(API 29)开始,系统默认启用智能网络休眠机制:当WiFi连接可用时,系统会将蜂窝网络置于后台休眠状态,甚至从allNetworks列表中隐藏,以此降低功耗。哪怕蜂窝指示灯亮着,实际也不会被应用主动调度,除非满足两个条件之一:

  • 设备开启了“移动数据始终开启”选项;
  • 应用主动申请多网络权限并明确请求使用蜂窝网络。

加上你的targetSdkVersion=29,触发了更严格的网络权限管控,系统对蜂窝网络的调度优先级远低于WiFi,最终导致蜂窝网络被系统“隐藏”。

2. “幽灵蜂窝网络”的本质

这个所谓的“幽灵网络”是三星Android 12设备特有的虚拟蜂窝占位网络。它并非真实的蜂窝数据连接,而是系统为了维持SIM卡的网络注册状态而创建的虚拟实例:

  • 作用是保证WiFi断开时,能快速切换回蜂窝网络,避免重新注册的延迟;
  • 它本身不具备实际数据传输能力,所以无法连接,也不会触发针对真实蜂窝网络的回调;
  • 系统标记它具备valid和internet能力,是为了保证系统网络状态的连贯性,防止系统误判蜂窝网络完全不可用。

解决方案建议

  • 开启“移动数据始终开启”:在设备设置的「移动网络」选项中找到该开关,开启后系统会保持蜂窝网络活跃,即使WiFi连接时也不会休眠。
  • 调整网络请求逻辑:如果需要同时使用WiFi和蜂窝网络,可在NetworkRequest.Builder中添加addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET),申请CHANGE_NETWORK_STATE权限,改用connectivityManager.requestNetwork(request, callback)主动请求蜂窝网络,而非仅注册回调。
  • 区分真实与虚拟蜂窝网络:针对三星设备的特殊逻辑,可通过connectivityManager.getNetworkCapabilities(network)检查网络的运营商信息或传输细节,排除虚拟占位网络。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:15:28