Android 短彩信收发流程(应用层) 下图为ComposeMessageActivity 中 confirmSendMessageIfNeeded 部分的信息发送流程
主要以接收者有效性的确认为主,然后转向sendMessage 方法进行发送
下图为ComposeMessageActivity 中 confirmSendMessageIfNeeded 部分的信息发送流程
主要以接收者有效性的确认为主,然后转向sendMessage 方法进行发送
WorkingMessage
send 从下图可以看出,在本方法中,对于不同类型的消息,分别调用不同的方法对其进行处理
并对彩信进行一些简要的预处理
短信部分: WorkingMessage
preSendSmsWorker 如下图所示,这是短信部分的发送流程
本方法中所涉及到的东西就比较多了
由于已经转到了新线程中利用 WorkingMessage 进行消息的发送,那么原来 ComposeMessage 中的那个WorkingMessage 就可以更新了
然后确认一下所属的会话是否存在,如果不存在就新建一个
接着,将接收者序列化,调用 sendSmsWorker
创建一个 SmsMessageSender,将消息存入发送队列中(type 字段设为 6)
通知 SmsReceiver 发送
SmsReceiver 则调用 SmsReceiverService 发送队列中的第一条短信
在发送之前,还要根据手机卡的不同,将短信内容分成若干块,保证每块的大小不超过该卡的限制
在分段后的最后一条短信的 sentIntent 中,设置 EXTRA_MESSAGE_SENT_SEND_NEXT 为true
这样当短信发送成功后,会调用 SmsReceiverService 的 handleSmsSent 方法,发送队列中的第一条