package org.holylobster.nuntius.sms; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsMessage; import android.util.Log; /** * Created by fly on 22/06/15. */ public class SmsReceiver extends BroadcastReceiver { private static final String TAG = SmsReceiver.class.getSimpleName(); private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; public SmsReceiver() {} // needed because of the receiver attributes in AndroidManifest.xml @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(SMS_RECEIVED)) { Log.d(TAG, "sms received"); Bundle bundle = intent.getExtras(); // get sms objects Object[] pdus = (Object[]) bundle.get("pdus"); if (pdus.length == 0) { return; } // large message might be broken into many SmsMessage[] messages = new SmsMessage[pdus.length]; StringBuilder sb = new StringBuilder(); for (int i = 0; i < pdus.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); sb.append(messages[i].getMessageBody()); } String sender = messages[0].getOriginatingAddress(); String message = sb.toString(); SMessage sMessage = new SMessage(sender, message); SmsObservable.getInstance().updateValue(sMessage); } } }