简单记录,为了下次忘记的时候可以很快回忆起。
发送或接受彩信时经过处理走到TransactionService.java,在这个类里面,这个类里面有著名的
beginMmsConnctivity()操作,彩信连接建立成功后就可以进行真正的数据传输,根据当前发送或接受等不同操作,
可以new RetrieveTransaction,SendTranscation等进行传输,以SendTranscation为例,TransactionService
会调用processTransaction()即SendTranscation里的process进行传输数据,SendTranscation里面的
run会封装M-Send.req数据包,更新数据库,调用sendPdu()发送数据,最后会调用到
httpUtils.java里面的httpConnection()进行数据传输,这个函数里面有些异常处理以catch expection形式分发到
handleHttpConnectionException().当有异常发生时,在这个函数里面会有字符串提示用户,这也就是发送彩信时看到
的一些感觉莫名其妙的toast提示的一部分来处。当发送M-Send.req到彩信中心,服务器会返回M-Send.conf的数据包,
M-Send.conf的解析仍然是在SendTranscation.java里面进行,会做数据库的更新,
M-Send.conf这个包里会包含Response-Status字段标明是发送成功与否的状态,如果是失败,根据原因有重试机制,这是在
RetryScheduler.java中进行处理,有些错误是permanent暂时无法恢复,处理时会标记为发送失败,显示给用户一个字符串提示,
比如0x82错误为RESPONSE_STATUS_ERROR_SERVICE_DENIED,出现这种错误的一种情况为,用户不停的发送彩信,短时间内达到了运营商
设置的上限,此时就不能进行进行发送,服务器会报这个ox82的错误,此时移动用户还会收到10658155发送来的短信提醒
“尊敬的客户,您刚才提交的彩信失败,因为提交的彩信条数过多已超过系统限制”,但到底是多少条移动的客服回答不上来,大概有60条左右吧,
不能发送的时间也没确定,但是上午不能发送,下午再试就可以发送了