Bộ thu phát sóng chỉ đơn giản trả lời các tin nhắn quảng bá từ các ứng dụng khác hoặc từ chính hệ thống. Những thông điệp này đôi khi được gọi là sự kiện hoặc ý định.
Khóa học lập trình Android có hai bước quan trọng sau để làm cho BroadcastReceiver hoạt động cho các ý định được phát sóng của hệ thống
Đăng ký máy thu phát sóng
Có một bước bổ sung trong trường hợp bạn sẽ thực hiện ý định tùy chỉnh của mình thì bạn sẽ phải tạo và phát các ý định đó.
Tạo bộ thu phát sóng
Một máy thu quảng bá được triển khai như một lớp con của lớp BroadcastReceiver và ghi đè phương thức onReceive () trong đó mỗi thông báo được nhận dưới dạng tham số đối tượng Intent .
Sau đây là nội dung của tệp hoạt động chính được sửa đổi MainActivity.java. Tập tin này có thể bao gồm từng phương pháp vòng đời cơ bản.
Chúng tôi đã thêm phương thức BroadcastIntent () để phát một ý định tùy chỉnh.
Sau đây sẽ là nội dung của tệp res / layout / Activity_main.xml để bao gồm một nút để phát mục đích tùy chỉnh của chúng tôi
Hãy thử chạy Hello World đã được sửa đổi của chúng tôi ! ứng dụng chúng tôi vừa sửa đổi.
Tôi giả sử bạn đã tạo AVD của mình trong khi thực hiện thiết lập môi trường. Để chạy ứng dụng từ studio Android, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào biểu tượng Chạy từ thanh công cụ.
Khóa học lập trình Android Studio cài đặt ứng dụng trên AVD của bạn và khởi động nó và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, nó sẽ hiển thị theo cửa sổ Trình mô phỏng
Bây giờ để phát mục đích tùy chỉnh của chúng tôi, hãy nhấp vào nút Broadcast Intent , điều này sẽ phát mục đích tùy chỉnh của chúng tôi "com.tutorialspoint. CUSTOM_INTENT" sẽ bị chặn bởi BroadcastReceiver đã đăng ký của chúng tôi, ví dụ như MyReceiver và theo logic đã triển khai của chúng tôi, một cái bánh mì nướng sẽ xuất hiện ở phía dưới của trình giả lập như sau
Bạn có thể thử triển khai BroadcastReceiver khác để chặn các ý định hệ thống được tạo như khởi động hệ thống, thay đổi ngày, pin yếu, v.v.
Ví dụ: các ứng dụng cũng có thể bắt đầu phát sóng để cho các ứng dụng khác biết rằng một số dữ liệu đã được tải xuống thiết bị và có sẵn để chúng sử dụng, vì vậy đây là máy thu phát sóng sẽ chặn giao tiếp này và sẽ bắt đầu hành động thích hợp.
![]() |
| Khóa học lập trình Android |
Khóa học lập trình Android có hai bước quan trọng sau để làm cho BroadcastReceiver hoạt động cho các ý định được phát sóng của hệ thống
Tạo bộ thu phát sóng.
Đăng ký máy thu phát sóng
Có một bước bổ sung trong trường hợp bạn sẽ thực hiện ý định tùy chỉnh của mình thì bạn sẽ phải tạo và phát các ý định đó.
Tạo bộ thu phát sóng
Một máy thu quảng bá được triển khai như một lớp con của lớp BroadcastReceiver và ghi đè phương thức onReceive () trong đó mỗi thông báo được nhận dưới dạng tham số đối tượng Intent .
lớp công khai MyReceiver mở rộng BroadcastReceiver { @Override void công khai onReceive ( Ngữ cảnh bối cảnh , ý định ý định ) { Toast . makeText ( bối cảnh , "Đã phát hiện ý định." , Toast . LENGTH_LONG ). hiển thị (); } }
Đăng ký máy thu phát sóng
Một ứng dụng lắng nghe ý định phát sóng cụ thể bằng cách đăng ký một máy thu quảng bá trong tệp AndroidManifest.xml .
Hãy xem xét chúng tôi sẽ đăng ký MyReceiver cho sự kiện do hệ thống tạo ra ACTION_BOOT_COMPLETED được hệ thống kích hoạt sau khi hệ thống Android hoàn tất quy trình khởi động.
Có một số sự kiện được tạo bởi hệ thống được định nghĩa là các trường tĩnh cuối cùng trong lớp Intent . Bảng sau liệt kê một vài sự kiện hệ thống quan trọng.
<application android: icon = "@ drawable / ic_launcher" android: nhãn = "@ string / app_name" android: theme = "@ style / AppTheme" > < receive android: name = "MyReceiver" > <aim-filter> <action android: name = "android.intent.action.BOOT_COMPLETED" > </ action> </ aim-filter> </ người nhận> </ ứng dụng>Bây giờ, bất cứ khi nào thiết bị Android của bạn được khởi động, nó sẽ bị BroadcastReceiver MyReceiver chặn và logic được triển khai bên trong onReceive () sẽ được thực thi.
Có một số sự kiện được tạo bởi hệ thống được định nghĩa là các trường tĩnh cuối cùng trong lớp Intent . Bảng sau liệt kê một vài sự kiện hệ thống quan trọng.
| Không. | Sự kiện liên tục & Mô tả |
|---|---|
| 1 | android.intent.action.BATTERY_CHANGED Phát sóng dính có chứa trạng thái sạc, mức và thông tin khác về pin. |
| 2 | android.intent.action.BATTERY_LOW Cho biết tình trạng pin yếu trên thiết bị. |
| 3 | android.intent.action.BATTERY_OKAY Cho biết pin bây giờ đã ổn sau khi hết pin. |
| 4 | android.intent.action.BOOT_COMPLETED Điều này được phát một lần, sau khi hệ thống khởi động xong. |
| 5 | android.intent.action.BUG_REPORT Hiển thị hoạt động để báo cáo một lỗi. |
| 6 | android.intent.action.CALL Thực hiện cuộc gọi đến một người được chỉ định bởi dữ liệu. |
| 7 | android.intent.action.CALL_BUTTON Người dùng nhấn nút "gọi" để đến trình quay số hoặc giao diện người dùng thích hợp khác để thực hiện cuộc gọi. |
| số 8 | android.intent.action.DATE_CHANGED Ngày đã thay đổi. |
| 9 | android.intent.action.REBOOT Có thiết bị khởi động lại. |
Phát sóng ý định tùy chỉnh
Nếu bạn muốn ứng dụng của mình tự tạo và gửi các ý định tùy chỉnh thì bạn sẽ phải tạo và gửi các ý định đó bằng cách sử dụng phương thức sendBroadcast () bên trong lớp hoạt động của bạn.
Nếu bạn sử dụng phương thức sendStickyBroadcast (Intent) , Intent bị dính , nghĩa là Ý định bạn đang gửi ở lại sau khi phát xong.
Vì vậy, hãy làm theo các bước sau để sửa đổi Khóa học lập trình Android mà chúng tôi đã tạo trong chương Ví dụ Hello World
công trống broadcastIntent ( Xem xem ) { Ý định ý định = mới Ý định (); ý định . setAction ( "com.tutorialspoint.CUSTOM_INTENT" ); sendBroadcast ( ý định ); }Mục đích này com.tutorialspoint.CUSTOM_INTENT cũng có thể được đăng ký theo cách tương tự như chúng tôi đã lấy lại ý định của hệ thống.
<application android: icon = "@ drawable / ic_launcher" android: nhãn = "@ string / app_name" android: theme = "@ style / AppTheme" > < receive android: name = "MyReceiver" > < aim -filter> <action android: name = "com.tutorialspoint.CUSTOM_INTENT" > </ action> </ aim -filter> </ người nhận> </ ứng dụng>Ví dụ này sẽ giải thích cho bạn cách tạo BroadcastReceiver để chặn ý định tùy chỉnh. Khi bạn đã quen với mục đích tùy chỉnh, sau đó bạn có thể lập trình ứng dụng của mình để chặn các ý định hệ thống được tạo.
Vì vậy, hãy làm theo các bước sau để sửa đổi Khóa học lập trình Android mà chúng tôi đã tạo trong chương Ví dụ Hello World
| Bậc thang | Sự miêu tả |
|---|---|
| 1 | Bạn sẽ sử dụng studio Android để tạo ứng dụng Android và đặt tên làỨng dụng của tôi theo gói com.example.tutorialspoint7.myapplicationnhư được giải thích trong chương Ví dụ Hello World . |
| 2 | Sửa đổi tệp hoạt động chính MainActivity.java để thêm phương thứcBroadcastIntent () . |
| 3 | Tạo một tệp java mới có tên MyReceiver.java trong góicom.example.tutorialspoint7.myapplication để xác định BroadcastReceiver. |
| 4 | Một ứng dụng có thể xử lý một hoặc nhiều ý định tùy chỉnh và hệ thống mà không có bất kỳ hạn chế nào. Mọi ý định bạn muốn chặn phải được đăng ký trong tệp AndroidManifest.xml của bạn bằng cách sử dụng thẻ <receive ... /> |
| 5 | Sửa đổi nội dung mặc định của tệp res / layout / Activity_main.xml để bao gồm một nút để phát mục đích. |
| 6 | Không cần phải sửa đổi tệp chuỗi, studio Android sẽ chăm sóc tệp string.xml. |
| 7 | Chạy ứng dụng để khởi chạy trình giả lập Android và xác minh kết quả của những thay đổi được thực hiện trong ứng dụng. |
Chúng tôi đã thêm phương thức BroadcastIntent () để phát một ý định tùy chỉnh.
gói com . Ví dụ . hướng dẫn7 . ứng dụng của tôi ; nhập Android . ứng dụng . Hoạt động ; nhập Android . nội dung . Ý định ; nhập Android . os . Gói ; nhập Android . xem . Xem ; lớp công khai MainActivity mở rộng Hoạt động { / ** Được gọi khi hoạt động đầu tiên được tạo. * / @Override công trống onCreate ( Bundle savedInstanceState ) { super . onCreate ( yetInstanceState ); setContentView ( R . bố trí . activity_main ); } // phát một ý định tùy chỉnh. công trống broadcastIntent ( Xem xem ) { Ý định ý định = mới Ý định (); ý định . setAction ( "com.tutorialspoint.CUSTOM_INTENT" ); sendBroadcast ( ý định ); } }
Sau đây là nội dung của MyReceiver.java
Sau đây sẽ là nội dung được sửa đổi của tệp AndroidManifest.xml . Ở đây chúng tôi đã thêm thẻ <receive ... /> để bao gồm dịch vụ của chúng tôi:Sau đây sẽ là nội dung của tệp res / layout / Activity_main.xml để bao gồm một nút để phát mục đích tùy chỉnh của chúng tôi
Hãy thử chạy Hello World đã được sửa đổi của chúng tôi ! ứng dụng chúng tôi vừa sửa đổi.
Tôi giả sử bạn đã tạo AVD của mình trong khi thực hiện thiết lập môi trường. Để chạy ứng dụng từ studio Android, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào biểu tượng Chạy từ thanh công cụ.
Khóa học lập trình Android Studio cài đặt ứng dụng trên AVD của bạn và khởi động nó và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, nó sẽ hiển thị theo cửa sổ Trình mô phỏng
Bây giờ để phát mục đích tùy chỉnh của chúng tôi, hãy nhấp vào nút Broadcast Intent , điều này sẽ phát mục đích tùy chỉnh của chúng tôi "com.tutorialspoint. CUSTOM_INTENT" sẽ bị chặn bởi BroadcastReceiver đã đăng ký của chúng tôi, ví dụ như MyReceiver và theo logic đã triển khai của chúng tôi, một cái bánh mì nướng sẽ xuất hiện ở phía dưới của trình giả lập như sau
Bạn có thể thử triển khai BroadcastReceiver khác để chặn các ý định hệ thống được tạo như khởi động hệ thống, thay đổi ngày, pin yếu, v.v.

Không có nhận xét nào:
Đăng nhận xét