Thursday, 6 August 2015

SMS Broadcast Receiver

In Android we can receive the incoming messages using broadcast receiver service. Using this we are able to read the new incoming messages even if the phone is in sleep.


SMS service:

public class SmsService extends BroadcastReceiver {
    public static final String SMS_BUNDLE = "pdus";
    public SmsService () {
    }

    @Override    public void onReceive(Context context, Intent intent) {

        Bundle intentExtras = intent.getExtras();
        String smsBody = "";  
        if (intentExtras != null) {
            Object[] sms = (Object[]) intentExtras.get(SMS_BUNDLE); 
            String smsMessageStr = ""; 
            for (int i = 0; i < sms.length; ++i) {
                SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]);
                smsBody = smsMessage.getMessageBody().toString();
                String address = smsMessage.getOriginatingAddress();
                smsMessageStr += "SMS From: " + address + "\n"; 
               smsMessageStr += smsBody + "\n";            }
        }
        Toast.makeText(context, smsMessageStr, Toast.LENGTH_SHORT).show();
        
    }
}


We need to add permissions in AndroidManifest.xml


<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />


No comments:

Post a Comment