漫游时禁止(Block when roaming):节省国际漫游流量
为什么需要这个条件
国际漫游时,移动数据的计费单位可能是「每 MB 数美元」甚至更高。即使你在国内已经把大部分应用的移动数据都关了,漫游场景下仍可能遇到:
- 某些应用通过 Play Services 静默推送消耗数据
- 设备自动连接运营商的辅助服务
- 之前忘了关闭的应用在漫游时意外联网
「漫游时禁止」条件专门用来在漫游状态下追加一层拦截。
工作机制
- 为目标应用勾选「漫游时禁止」
- NetGuard 检测蜂窝网络的 MCC(Mobile Country Code)变化
- MCC 与 SIM 卡发行国不一致 = 当前处于漫游状态
- 处于漫游状态时,该应用的 Wi-Fi / 移动数据联网会被额外禁止(覆盖已有的允许设置)
- 离开漫游状态回到本地网络后,恢复原有的 Wi-Fi / 移动数据设置
设置位置
应用详情面板(展开箭头)→ 勾选 「漫游时禁止」。
全局默认开启:主菜单 → 设置 → 默认 → 勾选 「Block when roaming」,新出现的应用默认启用此条件。
漫游状态的判定
NetGuard 通过 Android 的 TelephonyManager API 监测:
getSimCountryIso()→ SIM 卡发行国getNetworkCountryIso()→ 当前接入的网络运营商所在国
两者不同即判定为漫游。这个判定标准覆盖了:
- 真正的国际漫游
- 国内虚拟运营商使用不同 MCC 的场景(极少,绝大多数情况是 SIM 国 = 网络国)
与其他条件叠加
「漫游时禁止」是叠加拦截关系:
| 当前条件 | 漫游时禁止效果 |
|---|---|
| 应用移动数据已禁止 | 漫游时继续禁止(没变化) |
| 应用移动数据已允许 | 漫游时追加禁止(从允许变禁止) |
| 应用启用了「亮屏时允许」 | 漫游时继续禁止——漫游禁止优先级高于亮屏允许 |
典型配置建议
国际旅行前的快速配置
- 主菜单 → 筛选 → 只显示用户应用
- 逐个应用勾选「漫游时禁止」
- 或者直接全局默认开启「Block when roaming」,让新应用默认启用
特别注意的系统组件
以下系统组件在漫游时可能消耗额外流量,建议也对它们启用「漫游时禁止」:
- Google Play Services(
com.google.android.gms) - Google Sync(自动同步日历、联系人等)
- Google Maps 后台定位
不想全部禁止怎么办
漫游时也需要保持少量应用正常工作?对这些核心应用不要勾选「漫游时禁止」:
- 微信 / Telegram(保持通讯)
- 在线地图(查看位置)
- 银行 / 支付(临时需要)
- 酒店 / 机票应用(查看行程)
Wi-Fi 漫游不算
Wi-Fi 场景下不触发漫游条件——即使你在境外连当地 Wi-Fi,NetGuard 不会认为是「漫游」。只有蜂窝网络(移动数据)的 MCC 变化才会触发。
所以「漫游时禁止」只影响移动数据,不影响 Wi-Fi。这也意味着:
- 出门在外连接到当地酒店 / 咖啡馆 Wi-Fi 时,应用正常联网
- 切换到当地运营商移动数据时,被你标记了「漫游时禁止」的应用自动拦停
漫游条件不生效怎么办
极少数旧 Android 版本(特别是三星老机型)可能在漫游时无法正确上报 MCC 变化。遇到这种情况:
- 在设置 → 网络选项里,确认蜂窝数据已启用
- 手动断开再重连移动数据,触发 MCC 重新读取
- 如果持续不生效,可能是设备 ROM 的 bug——这种情况下建议直接在出境前手动把不想用移动数据的应用全部改成红色禁止