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);
}
}
}