2013-05-13 131 views
5

我見過很多問題,詢問如何獲取短信發件人的電話號碼,但不是收件人的電話號碼。我用的工具在這個網站產生的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字節。

任何想法?

+0

我也對此非常感興趣,出於同樣的原因,但似乎沒有人回答關於此問題的四個或五個問題中的任何一個。但是,如果信息位於PDU中,則Android API提供了獲取消息的原始PDU的可能性(請參閱[此處](http://developer.android.com/reference/android/telephony/SmsMessage.html# getPdu()))。我們可以用它來獲得PDU,手動解碼它,並找到收件人號碼? – ShankarG 2013-09-20 06:22:01

+0

但是有一個問題 - 我在解碼該站點中的PDU時看不到任何收件人號碼... – ShankarG 2013-09-20 06:25:50

回答

2

這取決於您從哪一點觀看短信。 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協議。

相關問題