• Uncategorized
  • 0

7.3: Broadcast Receivers

Task 1. Set up the PowerReceiver Project

Aplikasi PowerReceiver akan mendaftarkan BroadcastReceiver yang menampilkan pesan Toast saat perangkat terhubung atau terputus dari aliran listrik. Aplikasi ini juga akan mengirimkan dan menerima Intent Broadcast khusus untuk menampilkan pesan Toast yang berbeda.

1.1 Create the Project

  1. Membuat proyek baru bernama PowerReceiver, menerima opsi default dan menggunakan template Empty.
  2. Membuat Penerima Siaran baru. Pilih nama paket dalam Tampilan Proyek Android dan buka File > New > Other > Broadcast Receiver.
  3. Beri nama kelasnya CustomReceiver dan pastikan “Exported” dan “Enabled” dicentang.

  4. Buka file manifes Android. Ingat bahwa Android Studio secara otomatis membuat tag <receiver> dengan opsi terpilih sebagai atribut. BroadcastReceivers juga bisa didaftarkan secara program, tetapi lebih mudah mendefinisikannya dalam manifes.

1.2 Register your Receiver for system broadcasts

Untuk menerima siaran apa pun, pertama-tama Anda perlu menentukan intent siaran mana yang Anda minati.

Dalam file AndroidManifest.xml, tambahkan kode berikut di antara tag <receiver> untuk mendaftarkan Penerima Anda untuk Intent sistem:

<intent-filter>
   <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
   <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
</intent-filter>

1.3 Implement onReceive() in your BroadcastReceiver

  1. Buka file CustomReceiver, dan hapus implementasi default dalam metode onReceive().
  2. Dapatkan tindakan dari intent dan simpan dalam variabel String bernama intentAction:
    @Override
    public void onReceive(Context context, Intent intent) {
       String intentAction = intent.getAction();
    }
    
  3. Buat pernyataan switch dengan string intentAction, agar aplikasi dapat menampilkan pesan toast yang berbeda untuk setiap tindakan spesifik yang didaftarkan kepada penerima:
    switch (intentAction){
       case Intent.ACTION_POWER_CONNECTED:
           break;
       case Intent.ACTION_POWER_DISCONNECTED:
           break;
    }
    
  4. Inisialisasi variabel String bernama toastMessagesebelum pernyataan switch, dan jadikan nilainya nullagar bisa disetel tergantung pada tindakan siaran yang Anda terima.
  5. Tetapkan toastMessage ke “Power connected!” jika tindakannya ACTION_POWER_CONNECTED, dan “Power disconnected!” jika ACTION_POWER_DISCONNECTED. Ekstrak sumber daya string.
  6. Tampilkan pesan toast untuk durasi pendek setelah pernyataan switch:
    Toast.makeText(context, toastMessage, Toast.LENGTH_SHORT).show();
    

1.4 Restrict your Broadcast Receiver

Agar penerima siaran hanya aktif ketika aplikasi ditampilkan, aktifkan penerima dalam onStart() dan nonaktifkan dalam onStop().

Buat dua variabel anggota: PackageManager dan ComponentName.

Inisialisasi keduanya di onCreate().

Inisialisasi PackageManager dengan getPackageManager(). Konstruktor untuk ComponentName memerlukan konteks aplikasi dan nama kelas komponen:

mReceiverComponentName = new ComponentName(this, CustomReceiver.class);
mPackageManager = getPackageManager(); Ganti onStart() dan onStop():
@Override
protected void onStart() {
   super.onStart();
}
@Override
protected void onStop() {
   super.onStop();
}

Panggil setComponentEnabledSetting() di PackageManager dalam onStart(). Teruskan nama Komponen, konstanta PackageManager.COMPONENT_ENABLED_STATE_ENABLED, dan bendera DONT_KILL_APP:

mPackageManager.setComponentEnabledSetting
(mReceiverComponentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);

Dalam onStop(), gunakan PackageManager untuk menonaktifkan CustomReceiver, menggunakan konstanta PackageManager.COMPONENT_ENABLED_STATE_DISABLED:

mPackageManager.setComponentEnabledSetting
(mReceiverComponentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);

Task 2. Send and Receive a Custom Broadcast

Selain merespons siaran sistem, aplikasi juga dapat mengirimkan dan menerima Intent Siaran khusus.

2.1 Define your custom Broadcast Action string

Pengirim dan penerima siaran khusus harus menyetujui string tindakan untuk Intent Siaran. Membuat string tindakan unik dengan menambahkan Nama Tindakan di depannya dengan nama paket adalah praktik yang biasa.

  1. Buat variabel String konstan dalam MainActivity dan kelas CustomReceiver untuk digunakan sebagai Tindakan Intent Siaran (ini adalah string tindakan khusus):
    private static final String ACTION_CUSTOM_BROADCAST =
    "com.example.android.powerreceiver.ACTION_CUSTOM_BROADCAST";
    

2.2 Add a “Send Custom Broadcast” Button

  1. Dalam file activity_main.xml, tambahkan tampilan Tombol dengan atribut berikut:

    Atribut

    Nilai

    android:id

    “@+id/sendBroadcast”

    android:layout_width

    wrap_content

    android:layout_height

    wrap_content

    android:text

    “Send Custom Broadcast”

    android:layout_margin

    “8dp”

    android:onClick

    “sendCustomBroadcast”

  2. Ekstrak sumber daya string.
  3. Buat stub untuk metode sendCustomBroadcast(): Klik pada nama metode onClick. Tekan Alt (Option untuk pengguna Mac) + Enter dan pilih ‘Create ‘sendCustomBroadcast(View)’ dalam ‘MainActivity’.

2.3 Implement sendCustomBroadcast()

Karena siaran ini ditujukan untuk digunakan hanya oleh aplikasi Anda, gunakan LocalBroadcastManager untuk mengelola siaran dalam aplikasi. LocalBroadcastManager adalah kelas yang mengizinkan Anda untuk mendaftar dan mengirim siaran Intent ke objek lokal dalam aplikasi.

  1. Dalam metode sendCustomBroadcast() di MainActivity, buat Intent baru, dengan string tindakan khusus sebagai argumen.
    Intent customBroadcastIntent = new Intent(ACTION_CUSTOM_BROADCAST);
    
  2. Kirimkan siaran menggunakan kelas LocalBroadcastManager:LocalBroadcastManager.getInstance(this).sendBroadcast(customBroadcastIntent);

2.4 Register your Custom Broadcast

Jika Anda mendaftarkan penerima siaran secara terprogram, Anda harus berhenti mendaftarkan penerima tersebut ketika tidak diperlukan lagi. Dalam aplikasi, penerima hanya perlu merespons ke siaran khusus saat aplikasi dijalankan agar kita bisa mendaftarkan tindakan tersebut dalam onCreate() dan berhenti mendaftarkannya di onDestroy().

  1. Buat variabel anggota di MainActivity untuk Penerima dan inisialisasi member tersebut:
    private CustomReceiver mReceiver = new CustomReceiver();
    
  2. Dalam onCreate(), dapatkan instance LocalBroadcastManager dan daftarkan penerima dengan tindakan intent khusus:
    LocalBroadcastManager.getInstance(this)
    .registerReceiver(mReceiver, new IntentFilter(ACTION_CUSTOM_BROADCAST));
    
  3. Ganti metode onDestroy() dan berhenti mendaftarkan penerima dari LocalBroadcastManager:
    @Override
    protected void onDestroy() {
       LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
       super.onDestroy();
    }
    
    

2.5 Respond to the Custom Broadcast

  1. Dalam onReceive() kelas CustomReceiver, tambahkan pernyataan case untuk Tindakan Intent khusus.
  2. Modifikasi pesan toast ke “Custom Broadcast Received”, ekstrak ke dalam strings.xml dan panggil custom_broadcast_toast (tekan Alt + Enter atau Option + Enter di Mac dan pilih extract string resource):
    case ACTION_CUSTOM_BROADCAST:
       toastMessage = context.getString(R.string.custom_broadcast_toast);
       break;
  3. 
    

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *