MMS PDU

手机接收短信后,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

你可能感兴趣的:(android,.net,Blog,Google,WAP)