06 · 速查卡
1. 文件清单
App 侧(fuben4 dev b006d1144)
| 文件 | 说明 |
|---|
settingsPage/micarConnectionSettings/src/main/res/xml/connection_settings_fragment.xml:117-125 | XML 挂载(蜂窝网络分组 + NewTabPreference) |
.../miauto/telecomm/TeleCommunicationSelectController.kt | 控制器(246 行,全模块唯一业务类) |
base/settingsBaseUi/.../preferences/BaseTabPreferenceController.kt | Tab 控制器基类 |
base/settingsBaseUi/.../preferences/NewTabPreference.kt | Tab 控件 + 点击路由 |
.../mi/collinear/satellite/TelephonyUtil.kt(xcddif/f3dif 全功能,dcddif 空桩) | 平台反射封装 |
.../res/values-zh-rCN/strings.xml:28-35 / values/strings.xml:27-34 | 文案 |
.../res/values/preference_keys.xml:15-17 | Preference key |
平台侧(pangu/yu7)
| 文件 | 说明 |
|---|
miui/frameworks/telephony/common/base/java/android/telephony/TelephonyManagerEx.java:117-118 | 抽象 API |
.../TelephonyManagerImpl.java:736-758 | binder 转发 |
.../auto/com/android/phone/data/MultiInternetRouteController.java:388-410 | 受理层(恒 true) |
.../auto/com/android/phone/data/SmartDataChannelController.java:1709-1725 | 执行层(rat 防护) |
.../auto/com/android/phone/AutoPhoneInterfaceManager.java | radio 侧 aidl 实现 |
2. 常量速查
| 名称 | 值 | 含义 |
|---|
NETWORK_CTCC | 0 | 中国电信(卡 1 / phoneId 0) |
NETWORK_CMCC | 1 | 中国移动(卡 2 / phoneId 1) |
NETWORK_AUTO | 2 | 智能双卡(平台 WISDOM_DATA_CHANNEL) |
NETWORK_UNKNOWN | -1 | App 缓存未知 |
ERROR_DEFAULT | -1 | 反射失败返回值 |
ERROR_SET_CHANNEL | false | 设通道失败返回值 |
3. Settings.Global key
| key | 归属 | 值 |
|---|
VEHICLE_MOBILE_NETWORK_SELECTION | App 缓存(UI 用) | -1/0/1/2 |
HMI_DATA_SIM_APN | 平台权威 | 0/1/2,默认 2 |
DEFAULT_DATA_SIM_APN{apnNumber} | 云端策略通道偏好 | 见平台 :266-275 |
4. adb 排查命令
# 读两侧偏好(不一致=平台没受理;一致≠真切)
adb shell settings get global VEHICLE_MOBILE_NETWORK_SELECTION
adb shell settings get global HMI_DATA_SIM_APN
# 卡在位态(裁决"测试环境前提"):ABSENT=物理无卡
adb shell dumpsys telephony.registry | grep -i -A2 'cardstate\|mUiccSlots'
# 活跃订阅(几张卡可用)
adb shell dumpsys telephony.registry | grep -i -A3 'mActiveSubInfos'
# 当前数据通道/DDS
adb shell dumpsys telephony.registry | grep -i 'defaultDataSubId\|activeDataSubId'
adb shell dumpsys connectivity | grep -i 'route map\|MULTI_INTERNET'
# App 侧日志(D 级需开 prop;I 级 release 可见)
adb shell setprop log.tag.TeleCommunicationSelectController D
adb logcat | grep -i 'TeleCommunicationSelectController\|setDefaultChannel\|netIndex'
# 平台(radio 进程)日志:受理与执行
adb logcat -b all | grep -i 'setUserDefaultChannel\|setApnDefaultChannel\|updateDataChannel\|SmartDataChannelController'
5. 日志关键字 → 含义
| 看到 | 结论 |
|---|
setChannelResult = true + ignore due to rat=0 | 平台受理了但执行防护拒绝 → 查目标卡服务状态 |
setChannelResult = true + 无 ignore + 路由没动 | 深入平台(updateDataChannel 之后) |
setChannelResult = false | 非法值/重复值/反射失败 → 查 NoSuchMethod 日志、flavor |
开页 get mobile network selection 与 netIndex 不一致 | 正常校准路径,平台权威值覆盖 App 缓存 |
ClassNotFoundException/NoSuchMethodException | ROM 平台 API 缺失/改名,或打错 flavor 的包 |
6. 历史单索引
| 单号 | 一句话 | 定案 |
|---|
| N801PROB-138847 | 点中国移动不生效 | 台架卡2 modem 层无卡 + 平台受理即 true + App 无门控;测试环境主因 |
| N801PROB-132397 | 切运营商 16s 无响应 | 主线程冻结实锤(非 telephony,17ms 已排除);机理待 Looper 看门狗埋点 |
分析产物:/home/zbc/下载/test/车机JIRA/jira-data/{单号}/
7. 对接人
| 域 | 人 | 说明 |
|---|
| 平台 telephony(选卡/路由/智能双卡) | 庄员 zhuangyuan@xiaomi.com | 受理执行分离、无卡返回 false 等平台改进 |
| App(MiCarSettings) | 自己 | Tab 门控/反馈/文案 |
| 测试环境 eSIM | 台架维护方 + TBox | CARDSTATE_ABSENT 类问题 |
8. 常见误区
- ❌「Tab 选中 = 网切过去了」→ 选中只代表平台受理了偏好
- ❌「setUserDefaultChannel 返回 true = 成功」→ 受理层恒 true,执行 false 被丢弃
- ❌「右侧「中国电信 5G」是设置画的」→ 那是 SystemUI/平台状态区,非 MiCarSettings
- ❌「卡2无服务是射频屏蔽的锅」→ 屏蔽=有卡无服务;
CARDSTATE_ABSENT=物理无卡,两回事
- ❌「DCD 上也能用」→ dcddif 是空桩,DCD 整组隐藏