【问题标题】:How to get phone number of SMS recipient in Android如何在Android中获取短信收件人的电话号码
【发布时间】:2013-05-13 19:12:36
【问题描述】:

我看到很多问题询问如何获取 SMS 发件人的电话号码,而不是收件人的电话号码。我已经使用这个站点上的工具生成了一个 PDU,并且可以在其中看到收件人的电话号码:

Useful PDU details and PDU translation tool

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

这个问题似乎和我的很相似,但没有答案:

How to get SMS recipient's phone number in Android

我的问题有所不同,因为我详细介绍了一个指向有关 PDU 的站点的链接,这对于从 SmsMessage 类提供的原始 PDU 字节中提取电话号码可能很有用。

有什么想法吗?

【问题讨论】:

  • 出于同样的原因,我对此也很感兴趣,但似乎没有人回答关于 SO 的四五个问题中的任何一个。但是,如果信息在 PDU 中,Android API 提供了获取消息的原始 PDU 的可能性(请参阅here)。我们可以用它来获取 PDU,手动解码,然后找到收件人号码吗?
  • 但有一个问题 - 当我在该站点解码 PDU 时,我看不到任何收件人号码...
  • 这里的答案在三星 a10s 上对我有用:stackoverflow.com/questions/35968766/…
  • 您找到解决方案了吗?我也对同样的东西感兴趣????

标签: android sms pdu


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    相关资源
    最近更新 更多