如何在Android中获取短信收件人的电话号码
我见过很多问题,询问如何获取短信发件人的电话号码,但不是收件人的电话号码。我用的工具在这个网站产生的PDU,可以看到它的收件人的电话号码:如何在Android中获取短信收件人的电话号码
Useful PDU details and PDU translation tool
不过,我没有看到由Android提供的SmsMessage类的任意位置在哪儿能买到收件人的电话号码。我想这样做的原因是我有一个双SIM卡手机,但没有看到Android中的任何地方,我可以确定SIM卡端口用于接收短信。至少,我想看看每条短信,并确定他们发送的电话号码。
这个问题似乎很相似,我的,但没有答案:
How to get SMS recipient's phone number in Android
我的问题是不同的,因为我有详细的一个链接到一个约PDU的网站,这可以用于提取电话号码是有用的形成SmsMessage类提供的原始PDU字节。
任何想法?
这取决于您从哪一点观看短信。 SMS PDU位于MAP协议之上。
当您发送短信时,手机会将收件人号码放入PDU中的TP目的地内,当您收到短信时,在任何地方都没有收件人号码。其原因是SMS如何工作。 当有人发送短信时,他的GSM网络会为您提供SRIsm消息,这意味着他的HLR会尝试在您的家庭网络或您的家乡HLR中找到您。 HLR的响应是IMSI号码(您的SIM卡)和VLR/MSC号码,发送方网络必须发送SMS。 在第二个数据包中,实际上是SMS消息(Forward-MT),因此只是您的IMSI号码。 既然你有双SIM卡,你可以试着根据这个号码找到哪个SIM卡是发送短信的。 请注意,IMSI号码不是PDU的一部分,而是较低的MAP协议。
我也对此非常感兴趣,出于同样的原因,但似乎没有人回答关于此问题的四个或五个问题中的任何一个。但是,如果信息位于PDU中,则Android API提供了获取消息的原始PDU的可能性(请参阅[此处](http://developer.android.com/reference/android/telephony/SmsMessage.html# getPdu()))。我们可以用它来获得PDU,手动解码它,并找到收件人号码? – ShankarG 2013-09-20 06:22:01
但是有一个问题 - 我在解码该站点中的PDU时看不到任何收件人号码... – ShankarG 2013-09-20 06:25:50