手机接收短信后,Android(Android 2.2.1 From CyanogenMod For G6)在LogCat中会这样一个输出:
12-17 16:24:16.425: DEBUG/WAP PUSH(230): Rx: ae06246170706c69636174696f6e2f766e642e7761702e6d6d732d6d65737361676500b487af84[data:8c82985251594278686467766b2b41008d9083687474703a2f2f3231312e3133362e3232312e37352f5251594278686467766b2b41008805810302a300891780]3133353935373330313133[tag1:2f545950453d504c4d4e00]8a808e020d0c
注:“[data:]”"[tag1]"是人为加上去的。
Android中的MMS工具类都被"@hide"了,但还是可以注册BroadcastReceiver来接收到:"[data]"中的数据。
从Intent中获取到MMS的二进制数据的。获取方法为:
byte[]data = intent.getByteArrayExtra("data");
解析详情如下:
ae 06 246170706c69 63617469 6f6e2f 766e642e7761702e6d6d732d6d65737361676500 b4 87 af 84
ae:Transaction ID/PUSH ID(有一不明,该处Transaction ID与data中数据的Transaction ID有何不同吗?)
06:类型,说明PDU的类型和功能,Push消息的编码为0x06。
24:长度,即往后36字节,至af84结束(与文档有出入,文档中描述为22即34字节,不包含af84)。
6170706c696f6e2f766e642e7761702e6d6d732d6d65737361676500:applicon/vnd.wap.mms-message(此处少了表示"ati"三字符的三字节,未明原因,正常的字节码顺序应是:6170706C69636174696F6E2F766E642E7761702E6D6D732D6D65737361676500,"application/vnd.wap.mms-message")
b487:此处反而多出了两字节,Sodino不明其意,盼指教。
af:头部信息“X-Wap-Application-Id”的WSP压缩编码。
84:X-Wap-Application-Id的值,表示“x-wap-application:mms.ua”。
data:
[8c 82 98 5251594278686467766b2b4100 8d 90 83
687474703a2f2f3231312e3133362e3232312e37352f5251594278686467766b2b4100
88 05810302a300
891780]
8c:X-Mms-Message-Type
82:MESSAGE_TYPE_NOTIFICATION_IND(参考自mmssms.db/pdu "ct_l" 赋值为130即十六进制的0x82 及 AOSP com\google\android\mms\pdu\PduHeader)
98:X-Mms-Transaction-ID
5251594278686467766b2b4100:RQYBxhdgvk+A (tr_id,即Transaction-ID 参考自mmssms.db/pdu)
8d:X-Mms-Version
90:MMS Version值为1.0(来自网文,参考mmssms.db/pdu "v"值为16即((1 << 4) | 0),该值的名称为:MMS_VERSION_1_0)
83:CONTENT_LOCATION(参考自mmssms.db/pdu "ct_l"及AOSP com\google\android\mms\pdu\PduHeader)
687474703a2f2f3231312e3133362e3232312e37352f5251594278686467766b2b4100:http://211.136.221.75/RQYBxhdgvk+A(00:空字符)
88:EXPIRY
05:值的长度,即5字节
81:表示后面的时间采用“相对时间格式”
03:表示时间值为3个字节
02a300:172800秒,即48小时的有效期,与“信息”应用的提示相符。
89:FROM
17:"FROM"的长度,即23字节
80:FROM_ADDRESS_PRESENT_TOKEN,第1个字节
3133353935373330313133:13595730113,第2~12个字节
2f545950453d504c4d4e00:/TYPE=PLMN<00> (<00>表示未有明显的意义,保留原样),第13~23个字节
8a:MESSAGE_CLASS
80:MESSAGE_CLASS_PERSONAL(参考自:mmssms.db/pdu "m_cls"值为personal)
8e:MESSAGE_SIZE
02:往后读两字节
0d0c:(一个long转化为byte[]后保留的最简形式,真实值应为3340)
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sodino/archive/2010/12/19/6084697.aspx
分享到:
相关推荐
基于VisualC_的MMSPDU编解码系统设计.kdh基于VisualC_的MMSPDU编解码系统设计.kdh
为了节约无线领域的带宽资源,表中分配数值即为每个域名关键字使用预定义的二进制编码,MMS PDU封装的二进制编码的基本编码机制来源于WAP/WSP,最优化在空中传播的数据量。MMS PDU生成及翻译是MMS客户机程序的重要...
基于VisualC_的MMSPDU编解码系统设计
根据WAP MMS Encapsulation Protocol相关协议规定, 举例解析一个彩信通知的pdu, 详细介绍了pdu里每个字段的含义。
本篇文章是对PDU的使用进行了详细的分析介绍,需要的朋友参考下
mms的消息格式各压缩编码分析.发送和接收MMS的通信中,被传输的是MMS PDU(协议数据单元),MMS PDU作为WSP的消息体传输,由MMS头和消息体组成。
彩信PDU打包代码 在VC下实现默认包含一个图片和一个文本段,若需添加新的片段需修改smil文件
MMS PDU由MMS头和消息体组成。MMS头具体的描述了PDU的特定信息,消息体是可选的 本文介绍了SMS,EMS,MMS在传输内容、传输机制上的区别。深入讨论了 MMS协议的消息格式,压缩编码技术。最后指出当前各主要手机生产...
MMS PDU编码,支持GIF,JPG,MID,中文标题,自动生成彩信包。VS2008。
对MMS PDU的二进制数据进行了详细的解析
PDU SMC&MMS数据协议解析分析.xls
彩信的交互过程 彩信的PDU 彩信的PDU编码
Android Mms专题之:PDU介绍
This new release of the IEC 61850 protocol library contains a lot of small improvements ... With this release also the limit of 64k of the MMS PDU size has been removed to support very large data sets.
the java mms library implements the multimedia messaging service stack necessary for communicating with an MMSC (via the jWap stack) and implements the client transactions necessary for transmitting ...
短信pdu介绍,短信协议,是开发android mms.apk的资料。是解析短信数据的资料。
SMS与GPRS,MMS,WAP的一点 c程序
java mms 库实现了与 MMSC 通信所需的多媒体消息服务栈(通过 jWap 栈),并实现了发送和接收 mms PDU 所需的客户端事务。
Multimedia Messaging Service Encapsulation Protocol MMS封装协议 介绍MMS消息格式及封装 详细介绍了每个PDU所涉及的Header域和值,以及为它们分配的二进制码的一一对应关系。