一、代码轨迹---解锁Pin码
(1)显示解锁SIM卡界面
PhoneApp.java --- EVENT_SIM_LOCKED --- 显示解锁Pin码的Activity
(2)执行解锁(从上层至下层)
SimPinUnlockPanel.java --- supplyPin --- 解锁
(Ctrl+Shift+G 查看调用位置)
IccCard.java --- supplyPin --- EVENT_PINPUK_DONE --- EVENT_REPOLL_STATUS_DONE --- 解锁命令向下传递
RIL.java --- supplyIccPin --- RIL_REQUEST_ENTER_SIM_PIN --- 解锁命令向下传递
reference_ril.c --- requestEnterSimPin --- 发送AT指令解锁
void
supplyIccPin (java.lang.String pin, Message result)
Supply the ICC PIN to the ICC card returned message retMsg.obj = AsyncResult ar ar.exception carries exception on failure This exception is CommandException with an error of PASSWORD_INCORRECT if the password is incorrect ar.exception and ar.result are null on success.
二、底层上报消息
在RIL.java中,上报底层消息分为两种:主动上报(processUnSolicited)和询问上报(processSolicited),询问上报指的是需要发送命令才能返回结果。我们要注意命令的返回值 。
RIL.java