/ Lập Trình Android

Cách đăng ký Broadcast Receiver Android

Itexpress.edu.vn hướng dẫn các bạn cách đăng ký Broadcast Receiver Android để nhận được các sự kiện từ broadcaster.

Trước khi đăng ký Broadcast Receiver Android, chúng ta sẽ tìm hiểu rõ hơn về ứng dụng này.

Broadcast Receiver Android là gì?

Broadcast receiver là một thành phần Android cơ bản nó cho phép ứng dụng của bạn đăng kí lắng nghe các sự kiện của hệ thống hoặc của các ứng dụng khác.

Cách đăng ký Broadcast Receiver Android

Nôm na như sau, trong học lập trình Android có một thành phần giống như đài truyền hình (broadcaster), nó có nhiệm vụ phát sóng (send) các sự kiện (events) tới các ứng dụng (broadcast receiver or receiver).

Các sự kiện (events) ở đây có thể là các sự kiện của hệ thống như incoming call, new SMS, low battery, wifi ON/OFF, Screen lock/unlock, time zone change… hoặc sự kiện do các ứng dụng thông thường tạo ra. Như vậy ngay ứng dụng của các bạn cũng có thể phát ra các sự kiện và broadcaster sẽ gửi nó đến các ứng dụng có trên thiết bị.

Đăng ký Broadcast Receiver Android

Để ứng dụng của bạn nhận được các sự kiện từ broadcaster như trên thì bạn phải biến ứng dụng của bạn thành một receiver. Có 2 cách để đăng kí một ứng dụng trở thành receiver.

Cách 1

Đăng kí trong file AndroidMenifest.xml của ứng dụng

1
2
3
4
5
<receiver android:name=".MyWifiReceiver">
    <intent-filter>
        <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
    </intent-filter>
</receiver>

Intent-filter định nghĩa ra một loại message thông bao sự kiện trạng thái wifi thay đổi (WIFI_STATE_CHANGED) và đoạn code xml trên đã đăng kí ứng dụng nhận các thông báo liên quan đến sự thay đổi trạng thái của wifi.

“MyWifiReceiver” là một class extends BroadcastReceiver class và bạn phải overwrite hàm onReceive(). Class MyWifiReceiver sẽ nhận và sử lí intent-filter trên trong hàm onReceive()

Cách 2

Đăng kí trong code, sử dụng hàm Context.registerReceiver()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
context.registerReceiver(new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        try {
            int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN);
            switch (wifiState) {
                case WifiManager.WIFI_STATE_DISABLING:
                    // DO SOMETHING HERE
                    break;
                case WifiManager.WIFI_STATE_DISABLED:
                    // DO SOMETHING HERE
                    break;
                case WifiManager.WIFI_STATE_ENABLING:
                    // DO SOMETHING HERE
                    break;
                case WifiManager.WIFI_STATE_ENABLED:
                    // DO SOMETHING HERE
                    break;
                case WifiManager.WIFI_STATE_UNKNOWN:
                    // DO SOMETHING HERE
                    break;
                default:
                    break;
            }
        } catch (Exception e) {
        }
    }
}, new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION));

Bạn cũng có thể gỡ bỏ đăng kí broadcast receiver bằng hàm Context.unregisterReceiver()

Có rất nhiều các sự kiện mà ứng dụng có thể đăng kí lắng nghe như đã nói ở trên và mỗi loại sự kiện sẽ tương ứng với các action khác nhau.

Như vậy, chúng ta đã đăng ký Broadcast Receiver Android xong. Chúc bạn thực hiện thành công.