读书人

Mms短信群发兑现原理

发布时间: 2012-09-21 15:47:26 作者: rapoo

Mms短信群发实现原理
Mms短信群发实现原理
1、引入 大家也许对单条短信的发送已经非常清楚明白,但对短信的群发可能是一知半解,那短信的群发是怎么样实现的了?本章重点解析Mms短息群发功能的实现。这里要注意了如果大家对于短信发送的流程不清楚的同学可以看看我前面讲到的短信发送和接收流程。2、概括2.1、类图
Mms短信群发兑现原理2.2、时序图
Mms短信群发兑现原理
由于此时序图太大有一些不清晰还请见谅;3、具体解析
时序图有太大所以不是很清晰;这里对时序图进行解析,主力有一大部分是短信的发送流程,所以在此重点讲解群发与单条短信的区别之处;
1)短信进入数据库待发送表中 首先在这里唠叨一下在mmsms.db数据库中的sms表,该表保存了短信的相关内容,如下图所示: Mms短信群发兑现原理 该表示保存了短信的相关内容,这里的截图没有截完整,大家可以下来后自己查看该表的想请,这里要说的是type字段;、该字段非常重要,先来看看type的分类:

     boolean sendNextMsg = intent.getBooleanExtra(EXTRA_MESSAGE_SENT_SEND_NEXT, false);        if (mResultCode == Activity.RESULT_OK) {            if (!Sms.moveMessageToFolder(this, uri, Sms.MESSAGE_TYPE_SENT, error)) {                Log.e(TAG, "handleSmsSent: failed to move message " + uri + " to sent folder");            }            if (sendNextMsg) {                if (TelephonyManager.isMultiSimEnabled()) {                    sendFirstQueuedMessage(intent.getIntExtra(SUBSCRIPTION , 0));                } else {                    sendFirstQueuedMessage();                }            }
我想看到这,你肯定会恍然大悟吧,首先会获取sendNextMsg前面有提到该值,这里会去根据该值来发送下一条信息,调用的方法仍然是前面提到的sendFirstQueuedMessage方法,该方法会去获取当前数据库中是否有需要发送的短信,如果有继续发送第一条,如果没有直接返回。注意这里有一个Sms.moveMessageToFolder(this, uri, Sms.MESSAGE_TYPE_SENT, error)这样的操作,这里仍然是前面提到的更新sms表中type字段,会将其值设置成2,表示已发送成功,这时界面会将正在发送改成已发送状态,界面的实现是监听了数据库,那一旦数据库有改变就会更新界面,这里就不累述了,在短信的接收里有提到。
4、总结
短信群发其实和但条短信发送没有什么区别,前一条短信发送完成后,紧接着再发送第二条短信,这里由于担心前面发送单条短信的流程讲解的不是很清楚,这里做了一些简单的补充,希望有助于大家对短信发送的理解。

读书人网 >移动开发

热点推荐