Pada artikel sebelumnya telah membahas mengenai bagaimana mengirim pesan SMS maka pada kesempatan kali ini akan membahas bagaimana menerima pesan SMS. Pada bagian ini akan menggunakan bagian dari Android yang namanya Broadcast Receiver.

Apakah itu Broadcast Receiver ?

Broadcast Receiver sederhananya menerima pesan dari aplikasi lain atau dari sistem itu sendiri. Pesan ini bisa disebut sebagai event atau intents. Misal sebagai contoh, Aplikasi bisa memulai broadcast pesan untuk memberitahu aplikasi lain bahwa beberapa sms telah di terima di perangkat dan siap digunakan. jadi broadcast receiver ini yang akan mecegat komunikasi dan memulai tindakan yang tepat seperti memunculkan notifikasi atau lainnya.

Contoh penerima pesan SMS

buat class penerima sms dengan turunan dari class BroadcastReceiver

package id.web.sinaryuda.android.tutorial.penerimasms;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;

public class SmsReceiver extends BroadcastReceiver {

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

		// ambil pesan sms yang lewat
		Bundle bundle = intent.getExtras();
		SmsMessage[] msgs = null;
		String str = "";
		if (bundle != null) {

			// terima pesan sms yang diterima
			Object[] pdus = (Object[]) bundle.get("pdus");
			msgs = new SmsMessage[pdus.length];
			for (int i = 0; i < msgs.length; i++) {
				msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
				str += "SMS from " + msgs[i].getOriginatingAddress();
				str += " :";
				str += msgs[i].getMessageBody().toString();
				str += "\n";
			}

			// tampilkan pesan sms
			Toast.makeText(context, str, Toast.LENGTH_LONG).show();
		}
	}
}

pada bagian file AndroidManifest.xml tambahkan permission untuk menerima sms

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

serta daftarkan class BroadcastReceiver pada AndroidManifest

<receiver android:name="SmsReceiver">

<intent-filter>

<action android:name= "android.provider.Telephony.SMS_RECEIVED" />

</intent-filter>

</receiver>