WAP PUSH解析(3)——Android中的实现
田海立@CSDN
2012-06-30
Android中已经实现了SMS PDU的解析、WSP的解析,得到了WBXML封装的数据,并发出了广播"android.provider.Telephony.WAP_PUSH_RECEIVED"。原生实现中还没有对mimeType类型为WAP PUSH SI 和WAP PUSH SL 的该广播的响应,亦即,缺少对WBXML封装的PUSH数据的处理。本文通过分析总结Android中的原生实现,给出WAP PUSH SI/SL的实现参考。
一、Android中的原生实现
笔者已经有几篇文章分别描述SMS的接收处理过程,SMS PDU / WSP / WBXML的封装格式。
《Android中的SMS接收处理》侧重于SMS接收处理过程的描述; 《SMS PDU封装》侧重于描述PDU的封装格式; 《WAP PUSH的SMS PDU解析》描述WSP和WBXML的封装。
这里总结一下:
下面是dispatchWapPdu_default()的实现:
三、WapPushReceiver中对WBXML解析
可参考原生实现中MMS中PushReceiver的处理,做如下实现:
这里面关键点是WBXML格式的解析,可以参考 MIUI ROM接收WAP PUSH短信的补丁。这是为小米手机做的WAP PUSH解析实现,里面有WBXML解析的源代码可参考。不过这里面对WBXML中定义的TAG和Attribute的支持不全,读者可根据自己需求加入所需要的支持。
参考资料
1. Google Android source2.3.7_r1
Android原生实现源代码
2. WAP Binary XMLContent Format
WBXML标准,必看!
3. MIUI ROM接收WAP PUSH短信的补丁
Android上的WAPPUSH解析实现,有源代码,但是解析不全。
4. WAP Push over SMS
WAP PUSH over SMS的大致介绍(英文)
5. WAP Push SMS encoding
WAP PUSH Service Indication封装实例(英文)
6. Sending SMS WAPPush messages using the ActiveXperts SMSand MMS Toolkit
发送WAP PUSH的工具。是使用说明,虽然没实现细节,但可参考WBXML的Token和Attribute对照。(英文)