如何在Android中获取短信收件人的电话号码

gon*_*ins 5 sms android pdu

我已经看到很多问题,询问如何获取短信发送者的电话号码,而不是收件人的电话号码.我已使用此站点上的工具生成PDU,并可在其中查看收件人的电话号码:

有用的PDU细节和PDU转换工具

但是,我没有看到Android提供的SmsMessage类中的任何地方,我可以获取收件人的电话号码.我想这样做的原因是我有一部双卡手机,但在Android中没有任何地方可以看到我可以确定用于传入短信的SIM端口.至少,我想查看每条短信,并确定发送给他们的电话号码.

这个问题看起来与我的非常相似但没有答案:

如何在Android中获取短信收件人的电话号码

我的问题不同,因为我已经详细说明了一个关于PDU的站点的链接,这可能对从SmsMessage类提供的原始PDU字节中提取电话号码很有用.

有任何想法吗?

小智 2

这取决于您从哪个点观看短信。SMS PDU 位于 MAP 协议之上。

当您发送短信时,手机会将收件人号码放入 PDU 内的 TP-Destination 中,当您收到短信时,任何地方都没有收件人号码。其原因在于短信的工作原理。当某人向您发送短信时,他这边的 GSM 网络会为您请求 SRIsm 消息,这意味着他的 HLR 将尝试在他的家庭网络中或通过您的家庭 HLR 找到您。HLR 的响应是 IMSI 号码(您的 SIM 卡)和 VLR/MSC 号码,发送者网络必须向其中发送 SMS。在第二个数据包中,实际上是 SMS 消息(Forward-MT),因此只有您的 IMSI 号码。由于您是双SIM卡,您可以尝试根据该号码查找短信发送到哪张SIM卡。请注意,IMSI 编号不是 PDU 的一部分,而是较低的 MAP 协议的一部分。