Belajar Cara Menggunakan BroadcastReceiver pada Android


Assalamualaikum Warahmatullahi Wabarakatuh.

Selamat berjumpa kembali dengan saya, pada kesempatan kali ini, saya akan membagikan tutorial mengenai penggunaan BroadcastReceiver pada aplikasi Android, pada materi ini kita akan membahas, apa itu BroadcastReceiver dan bagaimana cara implementasinya pada aplikasi. Pengertian BroadcastReceiver itu sendiri yaitu sebuah fungsi yang digunakan untuk menerima pesan notifikasi dari sistem atau aplikasi, berupa event atau Intent.


BroadcastReceiver digunakan untuk menerima pesan jika ada perubahan dari suatu sistem, misalnya aplikasi alarm, sistem akan mendeteksi perubahan pada waktu yang telah ditentukan, jika waktu tesebut berada di waktu yang telah ditentukan, maka BroadcastReceiver akan menerima pesan dan membunyikan alarm tersebut.

Materi lainnya yang direkomendasikan:

Contoh lainnya seperti pemberitahuan file telah di unduh atau pemberitahuan jika battery tinggal 15% lagi, maka setelah itu apa yang harus dilakukan oleh sistem. BroadcastReceiver mengirimkan pesan dengan filter tertentu, filter inilah yang digunakan untuk menentukan kemana pesan tersebut akan terkirim. Disini kita akan membuat contoh program sederhana dengan BroadcastReceiver.

Belajar Cara Menggunakan BroadcastReceiver pada Android

1) Buat Project Baru pada Android Studio kalian.

2) Pertama kita buat class Receiver dengan mengextends BroadcastReceiver, class ini digunakan untuk menerima pesan yang di Broadcast.
package com.wildan.broadcastreceiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class Receiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        //Method ini digunakan untuk menerima pesan Broadcast yang masuk
        Toast.makeText(context, "Nama Action: "+intent.getAction(), Toast.LENGTH_LONG).show();
        Toast.makeText(context, "Pesan: "+intent.getStringExtra("myBroadcast"), Toast.LENGTH_LONG).show();
    }
}
Pada contoh source code tersebut, kita menggunakan method turunan dari BroadcastReceiver, yaitu onReceive(), method ini akan menerima setiap berubahan dari sistem, misalnya pada contoh yang kita buat, yaitu menampilkan pesan atau perubahan pada intent, Fungsi getAction(), digunakan untuk melihat nama filter yang dibroadcast dari Intent, jika muncul nama tersebut, maka itu artinya berhasil.

Dan getStringExtra(), digunakan untuk menampilkan data atau value dari Intent, yang mempunyai key "myBroadcast".

3) Selanjutnya kita daftarkan class Receiver tersebut didalam AndroidManifest.xml, dengan menambahkan tag <receiver> serta <intent-filter>. Seperti berikut ini.
<application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@/AppTheme">
      <activity android:name=".MainActivity">
          <intent-filter>
              <action android:name="android.intent.action.MAIN" />

              <category android:name="android.intent.category.LAUNCHER" />
          </intent-filter>
      </activity>

      <!-- Menambahkan Receiver dan Intent Filter -->
      <receiver android:name=".Receiver">
          <intent-filter>
              <action android:name="custom_broadcast_filter"/>
          </intent-filter>
      </receiver>

</application>
Coba kalian perhatikan, disana kita membuat sebuah filter bernama "custom_broadcast_filter", kalian dapat memberikan nama tersebut dengan bebas. Filter ini lah yang digunakan untuk membroadcast pesan dari Receiver, jadi jika ada activity/fragment yang mengirim broadcast dengan nama yang sama, maka receiver akan menangkap broadcast tersebut, yang sudah kita deklarasikan didalam method onReceive().

Diibaratkan nama filter ini seperti channel, Receiver mempunyai nama channel "custom_broadcast_filter", jika ada seseorang yang mengirim atau mengakses channel tersebut, maka Receiver akan menerima broadcastnya.

4) Buka activity_main.xml kalian, disini kita hanya akan menggunakan sebuah Button, untuk mengrim Broadcast.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.wildan.broadcastreceiver.MainActivity">

    <Button
        android:id="@+id/sendbroadcast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Kirim Broadcast" />
</RelativeLayout>
5) Berikutnya buka class MainActivity.java, kita akan membuat sebuah sistem, dimana saat Button di klik, maka pesan yang Broacastnya akan kita diterima.
package com.wildan.broadcastreceiver;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    //Deklarasi Variable
    private final String BROADCAST_ACCESS = "custom_broadcast_filter";
    private Button SendBroadcast;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        SendBroadcast = findViewById(R.id.sendbroadcast);
        SendBroadcast.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Mengirim Broadcast dengan filter yang dituju
                Intent sendBC = new Intent();
                sendBC.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES)
                        .setAction(BROADCAST_ACCESS)
                        .putExtra("myBroadcast","Broadcast diterima!");
                sendBroadcast(sendBC);
            }
        });
    }
}
Pertama kita mendeklarasikan Varibable BROADCAST_ACCESS, variable ini berisi nama filter yang dituju, saat Button diklik, sistem akan mengirim data didalam Intent tersebut, setia perubahan yang terjadi didalam intent tersebut, akan diterima oleh receiver, jadi receiver itu bekerja dibelakang layar.

Lalu selanjutnya kita tambahkan Flags pada intent tersebut, yang bertujuan supaya intent diterima BroadcastReceiver atau tidak, dan agar tidak terjadi masalah.

Didalam fungsi setAction(), kita manabahkan nama filter dari Receiver yang dituju, lalu kita manambahkan key dan value didalam fungsi putExtra(), yang akan di broadcast pada Receiver. untuk mengirimnya gunakan fungsi sendBroadcast(), lalu diisi dengan intent tersebut.

Data yang dikirimkan akan bekerja secara Asynchronous, yang artinya tiap proses akan mengirimkan pesan ke proses lainnya tanpa harus menunggu proses tersebut membalasnya atau bisa disebut menjalankan perintah selanjutnya tanpa harus menunggu perintah sebelumnya selesai.

Demo:


Itulah penggunaan dasar dari BroadcastReceiver, pada tutorial beriktunya, saya akan membahas mengenai penggunaan BroadcastReceiver untuk aplikasi Alarm, Mendeeksi koneksi jaringan serta perbedaan BroadcastReceiver dengan LocalBroadcastManager.

Terimakasih atas kunjungannya, semoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan.

Wassalamualaikum Warahmatullahi Wabarakatuh.

Wildan M Athoillah
Wildan M Athoillah Blogger dan spesialis pembuat aplikasi android.