Android 4.4 RIL短信接收流程深度解析

1 下载量 72 浏览量 更新于2024-09-01 收藏 85KB PDF 举报
本文详细解析了在Android 4.4系统中,RIL(Radio Interface Layer)处理短信接收的流程。通过分析日志,我们可以了解整个过程,包括从RIL接收到AT命令,到SmsMessage的解析,再到最终的短信处理和确认。 在Android系统中,当手机接收到短信时,RIL首先会捕获到网络调制解调器(Modem)发送的AT+CMT命令,该命令携带着新短信的信息。RIL收到这个信号后,会通过RILJ(RIL Java层)向操作系统报告一个未请求的响应(UNSOL_RESPONSE_NEW_SMS),这是系统知道有新短信到达的第一步。 接着,SmsMessage类开始解析接收到的数据,包括SMSSCaddress(短消息服务中心号码)、SMSoriginatingaddress(发送者号码)、SMSTP-PID(协议标识符)、datacodingscheme(数据编码方案)以及短信内容等。这些信息被用于构建短信对象,并存储在数据库中,此处的日志显示URI指向了新的短信记录。 然后,GsmInboundSmsHandler接手处理这个新消息。在空闲状态下,它开始处理类型为1的短信消息,获取唤醒锁并离开空闲状态,进入传递状态。这确保了即使设备处于休眠,也能处理短信。GsmInboundSmsHandler会将新短信的URI更新到数据库中的某个位置,如"content://raw/3"所示。 在短信处理完成后,RILJ会发送一个SMS_ACKNOWLEDGE请求,通知RIL已成功处理了新短信。RILC(RIL Command)层接收到这个请求后,执行AT+CNMA=1命令来确认短信接收。Modem回应"OK",表明接收确认已经完成。 总结来说,Android 4.4的RIL短信接收流程主要包括:RIL监听AT+CMT命令,触发UNSOL_RESPONSE_NEW_SMS事件;SmsMessage解析短信内容;GsmInboundSmsHandler处理短信并更新数据库;最后通过RIL发送确认信号给Modem。这个流程涉及到多个组件的协同工作,确保了短信能正确、及时地被系统处理和用户接收。