06 · 速查卡

1. 文件清单

App 侧(fuben4 dev b006d1144)

文件说明
settingsPage/micarConnectionSettings/src/main/res/xml/connection_settings_fragment.xml:117-125XML 挂载(蜂窝网络分组 + NewTabPreference)
.../miauto/telecomm/TeleCommunicationSelectController.kt控制器(246 行,全模块唯一业务类)
base/settingsBaseUi/.../preferences/BaseTabPreferenceController.ktTab 控制器基类
base/settingsBaseUi/.../preferences/NewTabPreference.ktTab 控件 + 点击路由
.../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-17Preference key

平台侧(pangu/yu7)

文件说明
miui/frameworks/telephony/common/base/java/android/telephony/TelephonyManagerEx.java:117-118抽象 API
.../TelephonyManagerImpl.java:736-758binder 转发
.../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.javaradio 侧 aidl 实现

2. 常量速查

名称值含义
NETWORK_CTCC0中国电信(卡 1 / phoneId 0)
NETWORK_CMCC1中国移动(卡 2 / phoneId 1)
NETWORK_AUTO2智能双卡(平台 WISDOM_DATA_CHANNEL)
NETWORK_UNKNOWN-1App 缓存未知
ERROR_DEFAULT-1反射失败返回值
ERROR_SET_CHANNELfalse设通道失败返回值

3. Settings.Global key

key归属值
VEHICLE_MOBILE_NETWORK_SELECTIONApp 缓存(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/NoSuchMethodExceptionROM 平台 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台架维护方 + TBoxCARDSTATE_ABSENT 类问题

8. 常见误区

  1. ❌「Tab 选中 = 网切过去了」→ 选中只代表平台受理了偏好
  2. ❌「setUserDefaultChannel 返回 true = 成功」→ 受理层恒 true,执行 false 被丢弃
  3. ❌「右侧「中国电信 5G」是设置画的」→ 那是 SystemUI/平台状态区,非 MiCarSettings
  4. ❌「卡2无服务是射频屏蔽的锅」→ 屏蔽=有卡无服务;CARDSTATE_ABSENT=物理无卡,两回事
  5. ❌「DCD 上也能用」→ dcddif 是空桩,DCD 整组隐藏