-2

Please anyone give me downloaded code or any useful link for getting the phone number of a SMS sender while receiving a message. I tried a lot.

Jaffa
  • 12,442
  • 4
  • 49
  • 101

2 Answers2

0

Try this , here messages[0].getOriginatingAddress() will return the phone number of a SMS sender

public void onReceive(Context context, Intent intent) {
          Log.i(TAG, "Intent recieved: " + intent.getAction());

             if (intent.getAction() == SMS_RECEIVED) {
                 Bundle bundle = intent.getExtras();
                 if (bundle != null) {
                     Object[] pdus = (Object[])bundle.get("pdus");
                     final SmsMessage[] messages = new SmsMessage[pdus.length];
                     for (int i = 0; i < pdus.length; i++) {
                         messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
                     }
                     if (messages.length > -1) {
                         Log.i(TAG, "Message recieved: " + messages[0].getMessageBody());
                         Log.i(TAG, "Message recieved: " + messages[0].getOriginatingAddress());
                     }
                 }
             }
        }

Hope it will work, or lead you to a solution

Faizan
  • 3,512
  • 2
  • 18
  • 15
0
@Override
public void onReceive(Context ctx, Intent intent) {
    //Log.d(Params.LOG_APP, "INCOMING SMS....");



    Bundle extras = intent.getExtras();

    if (extras == null)
        return ;

    Object[] dataArr = (Object[]) extras.get("pdus");
    //Log.d(Params.LOG_APP, "dataArr ["+dataArr+"]");



    for (Object data: dataArr) {
        SmsMessage sms = SmsMessage.createFromPdu((byte[]) data);
        //Log.d(Params.LOG_APP, "SMS ["+sms+"]");
        String body = sms.getMessageBody();
        String sender = sms.getOriginatingAddress();

        long time = sms.getTimestampMillis();

    }

}
FrancescoAzzola
  • 2,666
  • 2
  • 15
  • 22