Android中接收到的短信的SMS PDU格式是什么
我做了以下步骤Android中接收到的短信的SMS PDU格式是什么,android,Android,我做了以下步骤 字符串sms_txt=“aaaaaaaa” SubmitPdu smsg=SmsMessage.getSubmitPdu(“+919412354222”,“+91953557716”,sms_txt,false) 记下来自smsg的编码消息值 编码信息=[1,0,12,-111,25,89,83,117,112,97,0,0,10,-31,112,56,28,14,-121,-61,-31,48] 字节[]sBuf={1,0,12,-111,25,89,83,117,112,97
SubmitPdu smsg=SmsMessage.getSubmitPdu(“+919412354222”,“+91953557716”,sms_txt,false)
编码信息=[1,0,12,-111,25,89,83,117,112,97,0,0,10,-31,112,56,28,14,-121,-61,-31,48]
SmsMessage smsg1=SmsMessage.createFromPdu(sBuf)
mWrappedSmsMessage=NULL
所以我的问题是:
从
getSubmitPdu
函数创建的PDU数据与createfromtpdu
函数的预期PDU输入之间有什么区别?我想在一些单元测试中使用getSubmitPdu,所以我开始调试GSM源代码以找到答案。简而言之,getSubmitPdu充满了问题。它至少做了两件与createFromPdu不兼容的事情(我认为这对于GSM是正确的,因为它可以用于从BroadcastReceiver提供的传入SMS意图创建SMSMS消息)。除了我找到的那两个,我再也没有看得更远
首先,它尝试使用第一个字节作为协议信息。方法createFromPdu期望第一个字节是编码的服务中心地址(getSubmitPdu上的scAddress参数)的大小。可能您可以通过预加编码的scAddress(可从SubmitPdu类获得)并丢弃第一个字节来修复此问题,但请参阅下一个问题
其次,它省略了应该位于目标地址和消息正文之间的编码时间戳(6字节)。方法createFromPdu无条件地尝试解析时间戳
此时,我正在考虑在SMSLib中使用PDUutil(http://code.google.com/p/smslib/)创建Pdu 我想在一些单元测试中使用getSubmitPdu,所以我开始调试GSM源代码以找到答案。简而言之,getSubmitPdu充满了问题。它至少做了两件与createFromPdu不兼容的事情(我认为这对于GSM是正确的,因为它可以用于从BroadcastReceiver提供的传入SMS意图创建SMSMS消息)。除了我找到的那两个,我再也没有看得更远 首先,它尝试使用第一个字节作为协议信息。方法createFromPdu期望第一个字节是编码的服务中心地址(getSubmitPdu上的scAddress参数)的大小。可能您可以通过预加编码的scAddress(可从SubmitPdu类获得)并丢弃第一个字节来修复此问题,但请参阅下一个问题 其次,它省略了应该位于目标地址和消息正文之间的编码时间戳(6字节)。方法createFromPdu无条件地尝试解析时间戳 此时,我正在考虑在SMSLib中使用PDUutil(http://code.google.com/p/smslib/)创建Pdu