01 · 功能与页面结构(新手入门)

读完本篇你应该能:向产品/测试讲清这个功能是什么;在代码里找到任何一个文案、 任意一个 UI 元素的出处;知道它在哪些车型上存在。

1. 功能定位

XCD 平台(如 suiren/YU7)的 TBox 内置两张 eSIM:

卡槽运营商代码常量通道值
卡 1(slot 0 / phoneId 0)中国电信NETWORK_CTCC0
卡 2(slot 1 / phoneId 1)中国移动NETWORK_CMCC1
—(自动策略)智能双卡NETWORK_AUTO2(平台侧 WISDOM_DATA_CHANNEL)

代码原文注释(TeleCommunicationSelectController.kt:35): 「背景 xcd p2.1 xcd板子同时有两个e-sim卡,卡1——电信,卡2——移动」

「优先运营商」是一个偏好选择器:用户选的不是”连哪个运营商网络”(那是 modem 自动注册的),而是”默认数据通道走哪张卡”。选「智能双卡」时,平台根据两张卡的 网络质量自动倒换(详见 04 篇)。

它不是什么

  • ❌ 不是手动选网(PLMN 列表)——本模块没有搜网/选 PLMN 功能
  • ❌ 不显示实时运营商名——设置页右侧的「中国电信 5G」面板不是 MiCarSettings 实现 的(全仓 grep getNetworkOperatorName/operatorAlphaLong 零命中),那是 SystemUI/平台状态区,数据源是 phone0 实际注册态
  • ❌ DCD 平台(watt/8295)没有此功能——dcddif 的 TelephonyUtil 是空桩 (getDefaultChannel 直接返回 -1,注释「dcd没有使用,但是为了编译通过需要有对应方法」), 连接页整个「蜂窝网络」分组在 DCD 上隐藏

2. UI 结构

页面位置:设置 → 连接 → 页面底部。「蜂窝网络」是连接页 4 个分组之一 (其余:基础连接/手车互联/移动网络),见 连接/00-README.md 全景图。

┌─ 蜂窝网络 ──────────────────────────────┐
│ 优先运营商                               │
│ ┌─────────┬─────────┬─────────┐        │
│ │ 中国电信 │ 中国移动 │ 智能双卡 │  ← NewTabPreference 三段 Tab
│ └─────────┴─────────┴─────────┘        │
│ 优先使用中国移动,网络状态差时自动切换      ← summary(随选中项变化)
└─────────────────────────────────────────┘

XML 挂载点

settingsPage/micarConnectionSettings/src/main/res/xml/connection_settings_fragment.xml:117-125:

<MiCarPreferenceCategory
    android:key="@string/pk_connection_vehicle_network_category"     <!-- 蜂窝网络 -->
    android:title="@string/micar_connection_vehicle_network_category">
    <NewTabPreference
        android:key="@string/pk_connection_vehicle_network_default"  <!-- 优先运营商 -->
        android:title="@string/micar_connection_vehicle_network_title"
        settings:controller="...telecomm.TeleCommunicationSelectController" />
</MiCarPreferenceCategory>

只有一个 Preference、一个 Controller,没有二级页面(点击不跳页,Tab 原地切换)。

3. 文案清单(直抄 strings.xml)

中文 values-zh-rCN/strings.xml:28-35

name文案
micar_connection_vehicle_network_category蜂窝网络
micar_connection_vehicle_network_title优先运营商
..._ctcc_summary优先使用中国电信,网络状态差时自动切换
..._cmcc_summary优先使用中国移动,网络状态差时自动切换
..._auto_summary根据网络状态动态切换运营商,提高网络服务质量
..._CT中国电信
..._CMCC中国移动
..._smart_mode智能双卡

英文 values/strings.xml:27-34

category = Cellular networks,title = Preferred carrier,smart = Smart dual SIM 等。

⚠️ 版本文案差异(踩坑提示)

2026-09 实拍截图里标题是「默认运营商」、summary 是「优先使用默认运营商,网络状态 差时自动切换」——这套文案在 dev 仓全仓 grep 不到,说明该 ROM 带了比 dev 更新的 文案修改(或出货分支独有)。分析线上问题截图时,文案以 ROM 实际为准,不要以 dev strings 反推 ROM 版本;代码骨架(Tab 结构/值定义)各版本一致。

4. Preference Key 清单(values/preference_keys.xml:15-17)

key用途
pk_connection_vehicle_network_category「蜂窝网络」分组
pk_connection_vehicle_network_category_space分组上方留白
pk_connection_vehicle_network_default优先运营商 NewTabPreference 本体

5. 交互规则(用户视角)

  1. Tab 单选高亮:三个 Tab 同一时刻只有一个蓝色选中态;点已选中的 Tab 无事发生 (走 onSelectedTabClicked 空实现)
  2. ECALL/通话中禁用:任何一路 SIM 处于 CALL_STATE_OFFHOOK/RINGING 时,整排 Tab 置灰;此时点击会弹「切换失败」提示框(onDisabledTabClicked,:70-78)
  3. 切换是异步的:点击后 Tab 立即变选中(乐观更新),后台线程去调平台;平台返回 false 才会把 UI 弹回原来的选中项
  4. summary 跟随选中项:选电信/移动/智能分别显示对应文案

6. 可见即可说(语音助手)

该控件接入了可见即可说:BaseTabPreferenceController.onBuildMiCarViewDescription (:74-91)为每个 Tab 生成 MiCarViewDescription,compType = COMPONENT_TYPE_FILTER_SORT_VIEW, 用户可直接语音说「中国移动」完成切换。