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>