pdu
收发短消息有三种模式:BLOCK 模式、TEXT 模式和 PDU 模式。
BLOCK 模式现在用的很少了; TEXT 模式则只能发送 ASCII 码,它不能发送中文的
UNICODE 码——确切地讲,从技术上来说是可以用于发送中文短消息的,但是国内的手机
基本上不支持;而 PDU 模式开发起来则较为复杂,它需要编写专门的函数来将文本转换为
PDU 格式,但 PDU 模式被所有手机支持,可以使用任何字符集,它也是手机默认的编码方
式。
PDU 模式
用 PDU 模式收发短消息可以使用三种编码: 7-bit 编码、8-bit 编码和 UCS2 编码。7-bit
编码用于发送普通的 ASCII 字符;8-bit 编码通常用于发送数据消息,如图片或铃声等;UCS2编码用于发送 Unicode 字符。
PDU 串除了包含所发送的消息本身外,还包含很多其它参数信息,如服务中心号码、目标号码和编码方式等
pdu === smsc + tpdu + BearerData
移动
发短信
08 91 683108100005F0 31 00 0D 91 683119109991F2 00 08 C2 06 60A8597DFF01
接短信
08 91 683108100005F0 04 0D 91 683119109991F2 00 08 40 406031353023 06 60A8597DFF01
电信
接短信
00000000 00001002 00000000 00 00 00 00 0b 3138393031333339383933 00000000 00 00 00 00000016 00 03 100c60 | 01 04 200cb1f8 | 03 06 110330111954 | 09 01 00
code cdma/SmsMessage.java
messageType teleService serviceCategory digitMode numberMode ton numberPlan length 18901339893 bearerReply replySeqNo 阿
00000000 00001002 00000000 00 00 00 00 0b 3138393031333339383933 00000000 00 00 00 00000016 00 03 100c60 | 01 04 200cb1f8 | 03 06 110330111954 | 09 01 00
发短信
00000000 00001002 00000000 00 00 00 00 0b 3138393031333339383933 00000000 00 00 00 00000016 00 03 100c60 | 01 04 200cb1f8 | 03 06 110330111954 | 09 01 00
电信通过UTK,读UIM卡报回来的PDU还有另外一种格式
00 00 02 1002 | 04 04 0146AA84 | 08 0C 000320000001050019898188
00 | 00 02 1002 | 04 04 0146AA84 | 08 0C 00 03 200000 01 05 0019898188
SMS P2P| TeleserviceID TI_length id | DstAddress DA_length address | BearerData length Mesage_Id id_length id User_data data_len
所以要自己写代码编解码这种格式的PDU