School of Information Systems

Broadcast Receivers in Android

Broadcast receivers adalah komponen-komponen aplikasi Android yang memungkinkan kita mengirim atau menerima pesan-pesan. Broadcast receivers mendaftar system broadcast dan/atau custom broadcast serta mendapat notifikasi melalui intent dengan cara-cara berikut:

  • Oleh sistem, saat terjadi system event pada suatu aplikasi yang terdaftar.
  • Oleh aplikasi lain, jika suatu aplikasi terdaftar untuk custom event.

Broadcast receivers digunakan untuk menerima pesan jika ada perubahan dari suatu sistem. Misalnya saat ponsel dihubungkan dengan charger, sistem akan mendeteksi dan mengirim pesan, kemudian ponsel/aplikasi menerima pesan tersebut yang dintandai dengan tampilan ponsel sedang charging.

Gambar 1 Ilustrasi BroadcastReceiver saat charger connected

Sebuah broadcast sesungguhnya adalah pesan yang dibungkus menggunakan objek intent. Broadcast bisa dibuat secara implicit atau explicit. Berikut adalah perbedaannya:

  • Sebuah implicit broadcast adalah pesan yang tidak hanya ditujukan pada aplikasi kita saja, tetapi siapapun. Untuk menerima pesan implicit ini, kita perlu menggunakan sebuah IntentFilter dan mendeklarasikannya dalam manifest. Kita perlu melakukan langkah ini karena sistem operasi Android akan memberikan pesan broadcast pada setiap aplikasi yang sudah memiliki IntentFilter untuk event Karena cara kerjanya ini, implicit broadcast tidak menargetkan aplikasi tertentu. Contoh implicit intent adalah event saat ada SMS masuk.
  • Sebuah explicit broadcast adalah pesan yang ditujukan untuk aplikasi-aplikasi tertentu karena sudah menyiapkan suatu komponen. Hal ini terjadi karena ada atribut target yang menyebutkan package name atau class name dari suatu aplikasi.

Ada dua langkah penting untuk membuat sistem dengan sebuah broadcast receiver bekerja, yaitu:

  • Mendaftar BroadcastReceiver

Sebuah broadcast receiver perlu diimplementasikan sebagai subclass BroadcastReceiver dan menimpa method onReceive() serta menerima objek Intent sebagai parameter dari pesan. Kita bisa mendaftar BroadcastReceiver dan memspesifikkan intent-filters secara statis dalam manifest atau dinamis dengan registerReceiver().

Contoh:

public class MyReceiver extends BroadcastReceiver {

   @Override

   public void onReceive(Context context, Intent intent) {

      Toast.makeText(context, “Intent Detected.”, Toast.LENGTH_LONG).show();

   }

}

  • Mendaftar MyReceiver

Misal kita ingin mendaftar MyReceiver untuk memantau sistem yang dihasilkan event ACTION_BOOT_COMPLETED yang akan dikeluarkan ketika proses sistem Android selesai:

<application

   android:icon=”@drawable/ic_launcher”

   android:label=”@string/app_name”

   android:theme=”@style/AppTheme” >

   <receiver android:name=”MyReceiver”>

      <intent-filter>

         <action android:name=”android.intent.action.BOOT_COMPLETED”>

         </action>

      </intent-filter>

   </receiver>

</application>

Gambar 2 Ilustrasi BroadcastReceiver

Sekarang, setiap kali perangkat Android diaktifkan, pesan akan disiarkan MyReceiver.

Referensi:

https://medium.com/android-news/local-broadcast-less-overhead-and-secure-in-android-cfa343bb05be

https://techvidvan.com/tutorials/android-broadcast-receivers/

https://data-flair.training/blogs/android-broadcast-receiver/

https://harryridwanramadan.wordpress.com/2014/12/16/mengenal-broadcast-receiver-pada-android/

https://lobothijau.medium.com/broadcast-receivers-untuk-pemula-65a14ed03d88

https://www.wildantechnoart.net/2018/04/cara-menggunakan-broadcastreceiver-pada-android.html

https://docplayer.info/53241631-Pertemuan-ke-7-broadcast-receiver-dan-services.html

http://www.w3big.com/id/android/android-broadcast-receivers.html

https://docs.google.com/presentation/d/1qF9Yeau7uHIP7_aOHWgPU_RnfxACZzGyAZIzcJWz0R0/edit?usp=sharing

Ratu Annisa Gandasari, Ferdianto

    Deprecated: Function get_option was called with an argument that is deprecated since version 5.5.0! The "comment_whitelist" option key has been renamed to "comment_previously_approved". in /var/www/html/public_html/sis.binus.ac.id/wp-includes/functions.php on line 6031