我见过许多问题,询问如何获得短信发送者的电话号码,但不是接收者的电话号码。我已经使用这个网站上的工具生成了PDU,并可以在其中看到收件人的电话号码:
Useful PDU details and PDU translation tool
但是,在Android提供的SmsMessage类中,我看不到任何地方可以获取接收者的电话号码。我想这样做的原因是,我有一个双卡手机,但在Android中看不到任何我可以确定哪个SIM卡端口用于接收短信的地方。至少,我想要查看每条SMS消息,并确定它们被发送到的电话号码。
这个问题看起来和我的非常相似,但没有答案:
How to get SMS recipient's phone number in Android
我的问题不同,因为我详细介绍了一个关于PDU的站点的链接,这对于从SmsMessage类提供的原始PDU字节中提取电话号码可能很有用。
有什么想法吗?
发布于 2016-11-01 19:02:52
这取决于您从哪个点观看SMS消息。SMS PDU位于MAP协议之上。
当您发送SMS消息时,手机会将收件人号码放在PDU内的TP-Destination中,当您收到SMS消息时,任何地方都没有收件人号码。这是因为SMS是如何工作的。当有人给你发短信时,他这边的GSM网络为你请求SRIsm消息,这意味着他的归属位置寄存器将试图在他的家庭网络中或通过您的家庭归属寄存器找到您。来自归属位置寄存器的响应是IMSI号码(您的SIMcard)和VLR/MSC号码,发送者网络必须向其发送短消息。在第二个包中,实际上是SMS消息(Forward-MT),因此只是您的IMSI号码。由于您有双卡,您可以尝试根据此号码查找,哪张SIM卡是SMS的目的地。请注意,IMSI号不是PDU的一部分,而是更低的MAP协议。
https://stackoverflow.com/questions/16529448
复制相似问题