2013-05-13 38 views
5

Tôi đã thấy nhiều câu hỏi hỏi cách nhận số điện thoại của người gửi SMS chứ không phải số điện thoại của người nhận. Tôi đã sử dụng các công cụ trên trang web này để tạo ra một PDU và có thể nhìn thấy số điện thoại của người nhận trong đó:Cách nhận số điện thoại của người nhận SMS trong Android

Useful PDU details and PDU translation tool

Tuy nhiên, tôi không thấy bất cứ nơi nào trong lớp SmsMessage cung cấp bởi Android nơi tôi có thể nhận được số điện thoại của người nhận. Lý do tôi muốn làm điều này là tôi có một điện thoại Dual SIM, nhưng không thấy bất cứ nơi nào trong Android, nơi tôi có thể xác định cổng SIM nào đang được sử dụng cho SMS đến. Ít nhất, tôi muốn xem từng tin nhắn SMS và xác định số điện thoại họ đã gửi đến.

Câu hỏi này dường như rất giống với tôi nhưng không có câu trả lời:

How to get SMS recipient's phone number in Android

Câu hỏi của tôi là khác nhau bởi vì tôi đã trình bày chi tiết một liên kết đến một trang web về PDU, mà có thể hữu ích cho việc trích xuất số điện thoại tạo thành các byte PDU thô mà lớp SmsMessage cung cấp.

Bất kỳ ý tưởng nào?

+0

Tôi cũng rất quan tâm đến điều này, vì lý do tương tự, nhưng dường như không ai trả lời bất kỳ câu hỏi nào trong số bốn hoặc năm câu hỏi về vấn đề này trên SO. Tuy nhiên, nếu thông tin nằm trong PDU, API Android cung cấp khả năng nhận PDU thô của thư (xem [tại đây] (http://developer.android.com/reference/android/telephony/SmsMessage.html# getPdu())). Chúng ta có thể sử dụng nó để lấy PDU, giải mã nó theo cách thủ công và tìm số người nhận không? – ShankarG

+0

Nhưng một vấn đề - Tôi không thể thấy bất kỳ số người nhận nào khi tôi giải mã PDU trong trang web đó ... – ShankarG

Trả lời

2

Tùy thuộc vào thời điểm bạn xem tin nhắn SMS. SMS PDU nằm ở trên cùng của giao thức MAP.

Khi bạn gửi tin nhắn SMS, điện thoại sẽ đưa số người nhận vào TP-Destination trong PDU, khi bạn nhận được tin nhắn SMS, không có số người nhận ở bất cứ đâu. Lý do cho việc này là cách SMS hoạt động. Khi ai đó gửi cho bạn tin nhắn SMS, mạng GSM bên cạnh yêu cầu tin nhắn SRIsm cho bạn, điều đó có nghĩa là HLR của anh ấy sẽ cố gắng tìm bạn trong mạng gia đình của anh ấy hoặc thông qua HLR nhà bạn. Phản hồi từ HLR là số IMSI (số thẻ SIM của bạn) và số VLR/MSC, đến nơi mà mạng người gửi phải gửi SMS. Trong gói thứ hai, đó thực sự là tin nhắn SMS (Forward-MT), do đó chỉ là số IMSI của bạn. Vì bạn có hai SIM, bạn có thể cố gắng tìm dựa trên số này, mà thẻ SIM là SMS đích. Lưu ý rằng số IMSI không phải là một phần của PDU mà là giao thức MAP thấp hơn.

Các vấn đề liên quan