【移动网络】【T43-自由测】手机插SIM卡后无法在双卡与网络中

2018-05-23  本文已影响46人  平头说人生

【移动网络】【T43-自由测】手机插SIM卡后无法在双卡与网络中启用卡,同时也无法呼入或呼出电话

需要修改两个问题:

1 弹框UI 的修改

2 Sim卡禁用开关无效问

问题二 Sim卡禁用无效问题是: Qcom自扩展的service IQcrilMsgTunnel 没有得到初始化造成的

Attempt to invoke interface method 'int com.qualcomm.qcrilmsgtunnel.IQcrilMsgTunnel.sendOemRilRequestRaw(byte[], byte[], int)' on a null object reference

我们需要了解QcrilOemHook是 最终是通过IQtiOemHook使用HIDL去下发request,此处设计和RIL的HIDL设计一样

So, what's Hidl?

Sim卡启用禁用过程: App

-->bindIExtTelephony.Stub(ExtTelephonyServiceImpl.activateUiccCard)-->QtiUiccCardProvisioner-->QtiRilInterface

-->QcRilHook(sendQcRilHookMsg)

-->bind service to IQcrilMsgTunnel: IQcrilMsgTunnel(sendOemRilRequestRaw)

-->IQcrilMsgTunnel.Stub(QcrilMsgTunnelIfaceManager)

在QtiRilInterface中会初始化QcRilHook对象,在QcRilHook的构造函数中会先start QcrilMsgTunnelService,然后bind,

然而Log中没有打印出 QcRilHook构造函数中的相关Log

但是往下看Log可以看到QtiRilInterface在初始化的时候QcrilMsgTunnelService还没有启动起来,

所以肯定会导致bind service失败, 最终导致sim卡禁用的命令无法下发

03-04 07:42:17.979 15889 15889 D QtiRilInterface: in constructor

03-04 07:42:18.083 16202 16202 D QcrilMsgTunnelService: onCreate method

03-04 07:42:18.086 16202 16202 D QcrilMsgTunnelIfaceManager: :Instantiated

所以我们分析得出的原因是因为QcrilMsgTunnelService启动太晚,至少晚于ExtTelephonyServiceImpl的启动,导致得不到QcrilMsgTunnelIfaceManager的服务,最终导致sim卡禁用和打开无效。

所以我们的问题是: 为什么这次QcrilMsgTunnelService启动晚了?

按照正常逻辑它该什么时候启动?

备注:通过fastboot刷机后首次重启会出现此现象,再次重启后不存在了。

上一篇下一篇

猜你喜欢

热点阅读