2013-05-13 31 views
5

SMSの送信者の電話番号を取得する方法は尋ねられていますが、受信者の電話番号は取得しない方法がたくさんあります。私は、PDUを生成するには、このサイト上のツールを使用して、それに受信者の電話番号を見ることができます:AndroidでSMS受信者の電話番号を取得する方法

Useful PDU details and PDU translation tool

しかし、私はどこでも私が得ることができるアンドロイドが提供するSmsMessageクラスでは表示されません受信者の電話番号。私はこれをやりたいのですが、私はデュアルSIM電話を持っていますが、受信SMSにどのSIMポートが使用されているのかをAndroidで判断することはできません。少なくとも、私は各SMSメッセージを見て、どのSMSメッセージを送信したかを知りたいと思っています。

この質問は私にはなくノーの答えと非常に似ているようだ:

How to get SMS recipient's phone number in Android

私は電話番号を抽出するために有用である可能性があるのPDUに関するサイトへのリンクを、詳細に説明しているので、私の質問が異なっていますSmsMessageクラスが提供する未処理のPDUバイトを形成します。

アイデア?

+0

私も同じ理由でこれに非常に興味がありますが、だれもこれについての4つまたは5つの質問のいずれにも答えていないようです。ただし、情報がPDUにある場合、Android APIはメッセージの未処理PDUを取得する可能性があります([こちら](http://developer.android.com/reference/android/telephony/SmsMessage.html# getPdu()))。これを使ってPDUを取得し、手動でデコードし、受信者番号を見つけることができますか? – ShankarG

+0

しかし、1つの問題 - そのサイトのPDUをデコードすると、受信者番号が表示されません... – ShankarG

答えて

2

SMSメッセージをどの時点から視聴するかによって異なります。 SMS PDUはMAPプロトコルの上にあります。

SMSメッセージを送信すると、電話機は受信者番号をPDU内のTP-Destinationに入れます。SMSメッセージを受信すると、受信者番号はどこにもありません。この理由は、SMSの仕組みです。 誰かがあなたにSMS、GSMネットワークを送ってきたら、あなたのためにSRIsmメッセージを要求します。つまり、彼のホームネットワークで、またはあなたのホームHLRを通して、あなたのHLRがあなたを見つけようとします。 HLRからの応答は、送信者ネットワークがSMSを送信する必要がある場所へのIMSI番号(あなたのSIMカード)とVLR/MSC番号です。 実際にSMSメッセージ(Forward-MT)である2番目のパケットには、したがって、自分のIMSI番号のみです。 デュアルSIMを使用しているため、この番号に基づいて検索することができます.SIMカードの宛先はSMSです。 IMSI番号はPDUの一部ではなく、より低いMAPプロトコルであることに注意してください。

関連する問題