2013-05-13 8 views
5

Ho visto molte domande che chiedevano come ottenere il numero di telefono del mittente SMS, ma non il numero di telefono del destinatario. Ho usato lo strumento su questo sito per generare una PDU e può vedere il numero di telefono del destinatario in esso:Come ottenere il numero di telefono del destinatario SMS in Android

Useful PDU details and PDU translation tool

Tuttavia, non vedo da nessuna parte nella classe smsmessage fornita da Android dove posso trovare il numero di telefono del destinatario. Il motivo per cui voglio farlo è che ho un telefono Dual SIM, ma non vedo da nessuna parte in Android dove posso determinare quale porta SIM viene utilizzata per gli SMS in arrivo. Per lo meno, voglio guardare ogni messaggio SMS e determinare quale numero di telefono sono stati inviati.

Questa domanda sembra molto simile al mio, ma senza risposte:

How to get SMS recipient's phone number in Android

La mia domanda è diverso perché ho dettagliato un link ad un sito a proposito di PDU, che può essere utile per estrarre il numero di telefono formano i byte PDU non elaborati forniti dalla classe SmsMessage.

Qualche idea?

+0

Sono anche molto interessato a questo, per lo stesso motivo, ma nessuno sembra aver risposto a nessuna delle quattro o cinque domande su questo su SO. Tuttavia, se le informazioni sono nella PDU, l'API Android offre la possibilità di ottenere la PDU non elaborata di un messaggio (vedere [qui] (http://developer.android.com/reference/android/telephony/SmsMessage.html# getPdu())). Potremmo usarlo per ottenere la PDU, decodificarla manualmente e trovare il numero del destinatario? – ShankarG

+0

Ma un problema: non riesco a vedere alcun numero di destinatario quando decodifico una PDU in quel sito ... – ShankarG

risposta

2

Dipende da quale punto si guarda il messaggio SMS. SMS PDU si trova sopra il protocollo MAP.

Quando si invia un messaggio SMS, il telefono inserisce il numero di destinatario in TP-Destination all'interno di una PDU, quando si riceve un messaggio SMS, non è presente alcun numero di destinatario. La ragione di questo è come funziona SMS. Quando qualcuno ti manda un SMS, la rete GSM dalla sua parte richiede un messaggio SRIsm per te, il che significa che il suo HLR proverà a trovarti nella sua rete domestica, o attraverso il tuo HLR di casa. La risposta da HLR è il numero IMSI (la tua SIM card) e il numero VLR/MSC, a cui la rete del mittente deve inviare SMS. Nel secondo pacchetto, che in realtà è un messaggio SMS (Forward-MT), quindi è solo il tuo numero IMSI. Dato che hai una doppia SIM, puoi provare a cercare in base a questo numero, a cui la SIM card è destinata a SMS. Si noti che il numero IMSI non fa parte della PDU ma piuttosto un protocollo MAP inferiore.