从log看,qmi 命令的voice_get_clir返回是result = QMI_RESULT_FAILURE。如此UI应该一直提示设置失败才对。但是有时UI显示设置ok。如此UI逻辑本身有问题。
但是对比其他项目,直接是灰显的不能设置。于是查看对应需求:
6.5.1.补充业务要求及配置
[需求编号]: TS-VOLTE-FUNRQ-SS-000001
[需求描述]:
终端工作应支持如下补充业务,用户可通过Ut接口配置开启/关闭补充业务,具体补充
业务配置需满足《中国移动Ut接口规范》要求。
号码显示类:
业务名称 是否提供该业务 是否通过Ut配置 Ut配置界面要求
主叫号码显示(OIP) 是 否 是,置为不可用
主叫号码显示限制 是 否 是,置为不可用
被叫号码显示 是 否 是,置为不可用
被叫号码显示限制 是 否 是,置为不可用
同时对比AP侧代码:
两个项目的pacakges/services/Telephony目录下的GsmUmtsAdditionalCallOptions.java文件对比。原来对比项目根据 config_disable_clir_over_ut 配置,如果为true则直接灰显。也不去查询clir(通过CLIRListPreference的init函数的skipreading参数控制。)。config_disable_clir_over_ut 配置在如下文件中device/overlay/packages/apps/CarrierConfig/res/xml/vendor.xml。
应用通过Phone.getOutgoingCallerIdDisplay来获取。目前无论是普通GSMCdmaphone(RIL_REQUEST_GET_CLIR)还是imsphone(IMS_SOCKET_REQ_GET_CLIR)在qcril_eventlist.h中都是映射到qcril_qmi_voice_request_get_clir.最终通过QMI_VOICE_GET_CLIR_REQ_V02来和modem交互。