Ví dụ, các ứng dụng cũng có thể khởi tạo chương trình 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 để sử dụng, vì vậy đây là bộ thu phát sẽ chặn thông báo này và sẽ khởi động hành động thích hợp.
Có hai bước quan trọng sau đây để làm cho BroadcastReceiver hoạt động cho các mục đích phát sóng hệ thống lập trình android.
Tạo Broadcast Receiver.
Đăng ký Broadcast Receiver
Có một bước bổ sung trong trường hợp bạn sẽ triển khai các ý định tùy chỉnh của mình thì bạn sẽ phải tạo và phát những ý định đó.
Một ứng dụng lắng nghe ý định phát sóng cụ thể bằng cách đăng ký bộ thu phát sóng trong tệp Android Manifest.xml . Hãy xem xét chúng tôi sẽ đăng ký MyReceiver cho sự kiện được tạo hệ thống ACTION_BOOT_COMPLETED được hệ thống kích hoạt khi hệ thống Android đã hoàn tất quá trình khởi động.
PHÁT SÓNG THU
Bây giờ bất cứ khi nào thiết bị Android của bạn được khởi động, nó sẽ bị chặn bởi BroadcastReceiver MyReceiver và logic được triển khai bên trong onReceive () sẽ được thực hiện.
Có một số sự kiện do hệ thống tạo ra được định nghĩa là các trường tĩnh cuối cùng trong lớp Intent . Bảng sau đây liệt kê một vài sự kiện hệ thống quan trọng.
Nếu bạn sử dụng phương thức sendStickyBroadcast (Intent) , Intent là sticky , có nghĩa là Intent bạn đang gửi vẫn ở lại sau khi chương trình phát sóng hoàn tất.
Vì vậy, hãy làm theo các bước sau để sửa đổi ứng dụng Android mà chúng tôi đã tạo trong chương Hello World Example
Sau đây là nội dung của tệp hoạt động chính đã sửa đổi MainActivity.java . Tệp 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.
Để chạy ứng dụng từ Android studio, 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 Chạy biểu tượng từ thanh công cụ.
Android Studio cài đặt ứng dụng trên AVD của bạn và khởi động ứng dụng và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, ứng dụng sẽ hiển thị cửa sổ Trình mô phỏng sau
Bây giờ để phát sóng ý định tùy chỉnh của chúng ta, hãy nhấp vào nút Intent Broadcast , điều này sẽ phát sóng ý định tùy chỉnh của chúng tôi "com.
Bạn có thể thử triển khai BroadcastReceiver khác để chặn các hệ thống được tạo ra như hệ thống khởi động, ngày thay đổi, pin yếu, v.v.
Có hai bước quan trọng sau đây để làm cho BroadcastReceiver hoạt động cho các mục đích phát sóng hệ thống lập trình android.
Tạo Broadcast Receiver.
Đăng ký Broadcast Receiver
Có một bước bổ sung trong trường hợp bạn sẽ triển khai các ý định tùy chỉnh của mình thì bạn sẽ phải tạo và phát những ý định đó.
Tạo Broadcast Receiver
Một bộ thu phát sóng được thực hiện 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 { lớp MyReceiver mở rộng BroadcastReceiver { @Ghi đè@Ghi đè public void onReceive (bối cảnh bối cảnh, ý định Intent) {công trống onReceive ( Context bối cảnh , ý định ý định ) { Toast.makeText (ngữ cảnh, "Intent Detected.", Toast.LENGTH_LONG) .show ();Bánh mì nướng . makeText ( ngữ cảnh , "Intent Detected." , Bánh mì nướng . LENGTH_LONG ). show (); }} }}Đăng ký Broadcast Receiver
Một ứng dụng lắng nghe ý định phát sóng cụ thể bằng cách đăng ký bộ thu phát sóng trong tệp Android Manifest.xml . Hãy xem xét chúng tôi sẽ đăng ký MyReceiver cho sự kiện được tạo hệ thống ACTION_BOOT_COMPLETED được hệ thống kích hoạt khi hệ thống Android đã hoàn tất quá trình khởi động.
PHÁT SÓNG THU
<ứng dụng android: icon = "@ drawable / ic_launcher"android: icon = "@ drawable / ic_launcher" android: label = "@ string / app_name"android: label = "@ string / app_name" android: theme = "@ style / AppTheme">android: theme = "@ style / AppTheme" > <receiver android: name = "MyReceiver"><receiver android: name = "MyReceiver" > <intent-filter><intent-filter> <action android: name = "android.intent.action.BOOT_COMPLETED"><action android: name = "android.intent.action.BOOT_COMPLETED" > </ action></ action> </ intent-filter></ intent-filter> </ người nhận></ người nhận> </ application></ application>
Có một số sự kiện do hệ thống tạo ra được định nghĩa là các trường tĩnh cuối cùng trong lớp Intent . Bảng sau đây liệt kê một vài sự kiện hệ thống quan trọng.
| Sr.No | Sự kiện & mô tả sự kiện |
|---|---|
| 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 thấp. |
| 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 lỗi. |
| 6 | android.intent.action.CALL Thực hiện cuộc gọi đến ai đó được chỉ định bởi dữ liệu. |
| 7 | android.intent.action.CALL_BUTTON Người dùng nhấn nút "gọi" để chuyển đế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 Khởi động lại thiết bị. |
Mục đích phát sóng tùy chỉnh
Nếu bạn muốn bản thân ứng dụng của bạn nên 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 là sticky , có nghĩa là Intent bạn đang gửi vẫn ở lại sau khi chương trình phát sóng hoàn tất.
public void broadcastIntent (Chế độ xem) { void broadcastIntent ( Chế độ xem ) { Intent intent = new Intent ();Intent intent = new Intent (); intent.setAction ("com.tutorialspoint.CUSTOM_INTENT");. setAction ( "com.tutorialspoint.CUSTOM_INTENT" ); sendBroadcast (ý định);( ý đị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 đã regsitered hệ thống tạo ra ý định.
<ứng dụng android: icon = "@ drawable / ic_launcher"android: icon = "@ drawable / ic_launcher" android: label = "@ string / app_name"android: label = "@ string / app_name" android: theme = "@ style / AppTheme">android: theme = "@ style / AppTheme" > <receiver android: name = "MyReceiver"><receiver android: name = "MyReceiver" > <intent-filter><intent-filter> <action android: name = "com.tutorialspoint.CUSTOM_INTENT"><action android: name = "com.tutorialspoint.CUSTOM_INTENT" > </ action></ action> </ intent-filter></ intent-filter> </ người nhận></ người nhận> </ application></ application>
Thí dụ
Ví dụ này sẽ giải thích cho bạn cách tạo BroadcastReceiver để chặn ý định tùy chỉnh. Một khi bạn đã quen thuộc với ý định tùy chỉnh, thì bạn có thể lập trình ứng dụng của mình để chặn các ý định được tạo ra của hệ thống.Vì vậy, hãy làm theo các bước sau để sửa đổi ứng dụng Android mà chúng tôi đã tạo trong chương Hello World Example
| Bậc thang | Sự miêu tả |
|---|---|
| 1 | Bạn sẽ sử dụng Android studio để tạo một ứng dụng Android và đặt tên nó là Ứng dụng của tôi dưới dạng góicom.example.tutorialspoint7.myapplication như được giải thích trong chương Hello World Example . |
| 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 là MyReceiver.java trong góicom.example.tutorialspoint7.myapplication để định nghĩa BroadcastReceiver. |
| 4 | Một ứng dụng có thể xử lý một hoặc nhiều ý định hệ thống và tùy chỉnh 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 Android Manifest.xml của bạn bằng cách sử dụng thẻ <receiver ... /> |
| 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 sóng ý định. |
| 6 | Không cần phải sửa đổi tệp chuỗi, Android studio sẽ xử lý 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 các 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.
package com.example.tutorialspoint7.myapplication;com . ví dụ . tutorialspoint7 . myapplication ; nhập android.app.Activity;nhập Android . ứng dụng . Hoạt động ; nhập android.content.Intent;nhập Android . nội dung . Ý định ; nhập android.os.Bundle;nhập Android . os . Gói ; nhập android.view.View;nhập Android . xem . Xem ; public class MainActivity mở rộng Activity {public class MainActivity mở rộng Activity { / ** Được gọi khi hoạt động được tạo lần đầu tiên. * // ** Được gọi khi hoạt động được tạo lần đầu tiên. * / @Ghi đè@Ghi đè public void onCreate (Bundle savedInstanceState) {public void onCreate ( Bundle savedInstanceState ) { super.onCreate (savedInstanceState);siêu . onCreate ( savedInstanceState ); setContentView (R.layout.activity_main);( R . Bố trí . Activity_main ); }} // phát sóng ý định tùy chỉnh.// phát sóng ý định tùy chỉnh. public void broadcastIntent (Chế độ xem) {public void broadcastIntent ( Chế độ xem ) { Intent intent = new Intent ();Intent intent = new Intent (); intent.setAction ("com.tutorialspoint.CUSTOM_INTENT"); sendBroadcast (ý định);. setAction ( "com.tutorialspoint.CUSTOM_INTENT" ); sendBroadcast ( ý định ); }} }}Sau đây là nội dung của MyReceiver.java :
package com.example.tutorialspoint7.myapplication;com . ví dụ . tutorialspoint7 . myapplication ; nhập android.content.BroadcastReceiver;nhập Android . nội dung . BroadcastReceiver ; nhập android.content.Context;nhập Android . nội dung . Bối cảnh ; nhập android.content.Intent;nhập Android . nội dung . Ý định ; nhập android.widget.Toast;nhập Android . tiện ích . Bánh mì nướng ; / **/ ** * Được tạo bởi TutorialsPoint7 vào ngày 23/8/2016. * / lớp công khai MyReceiver mở rộng BroadcastReceiver {lớp công khai MyReceiver mở rộng BroadcastReceiver { @Ghi đè@Ghi đè public void onReceive (bối cảnh bối cảnh, ý định Intent) {công trống onReceive ( Context bối cảnh , ý định ý định ) { Toast.makeText (ngữ cảnh, "Intent Detected.", Toast.LENGTH_LONG) .show ();Bánh mì nướng . makeText ( ngữ cảnh , "Intent Detected." , Bánh mì nướng . LENGTH_LONG ). show (); }} }}Sau đây sẽ là nội dung sửa đổi của tệp Android Manifest.xml . Ở đây chúng tôi đã thêm thẻ <receiver ... /> để bao gồm dịch vụ của chúng tôi:
<? xml version = "1.0" encoding = "utf-8"?>xml version = "1.0" encoding = "utf-8" ?> <manifest xmlns: android = "http://schemas.android.com/apk/res/android"<manifest xmlns: android = "http://schemas.android.com/apk/res/android" package = "com.example.tutorialspoint7.myapplication">package = "com.example.tutorialspoint7.myapplication" > <ứng dụng<ứng dụng android: allowBackup = "true"android: allowBackup = "true" android: icon = "@ mipmap / ic_launcher"android: icon = "@ mipmap / ic_launcher" android: label = "@ string / app_name"android: label = "@ string / app_name" android: supportRtl = "true"android: supportRtl = "true" android: theme = "@ style / AppTheme">android: theme = "@ style / AppTheme" > <hoạt động android: name = ". MainActivity"><activity android: name = ".MainActivity" > <intent-filter><intent-filter> <action android: name = "android.intent.action.MAIN" /><action android: name = "android.intent.action.MAIN" /> <category android: name = "android.intent.category.LAUNCHER" /><category android: name = "android.intent.category.LAUNCHER" /> </ intent-filter></ intent-filter> </ hoạt động></ hoạt động> <receiver android: name = "MyReceiver"><receiver android: name = "MyReceiver" > <intent-filter><intent-filter> <action android: name = "com.tutorialspoint.CUSTOM_INTENT"><action android: name = "com.tutorialspoint.CUSTOM_INTENT" > </ action></ action> </ intent-filter></ intent-filter> </ người nhận></ người nhận> </ application></ application> </ manifest></ manifest>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 sóng ý định tùy chỉnh của chúng tôi
<RelativeLayout xmlns: android = "http://schemas.android.com/apk/res/android"xmlns: android = "http://schemas.android.com/apk/res/android" xmlns: tools = "http://schemas.android.com/tools" xmlns: tools = "http://schemas.android.com/tools" android: layout_width = "match_parent"android: layout_width = "match_parent" android: layout_height = "match_parent" android: layout_height = "match_parent" android: paddingLeft = "@ dimen / activity_horizontal_margin"android: paddingLeft = "@ dimen / activity_horizontal_margin" android: paddingRight = "@ dimen / activity_horizontal_margin"android: paddingRight = "@ dimen / activity_horizontal_margin" android: paddingTop = "@ dimen / activity_vertical_margin"android: paddingTop = "@ dimen / activity_vertical_margin" android: paddingBottom = "@ dimen / activity_vertical_margin" android: paddingBottom = "@ dimen / activity_vertical_margin" công cụ: context = ". MainActivity">tools: context = ".MainActivity" > <TextView<TextView android: id = "@ + id / textView1"android: id = "@ + id / textView1" android: layout_width = "wrap_content"android: layout_width = "wrap_content" android: layout_height = "wrap_content"android: layout_height = "wrap_content" android: text = "Ví dụ về phát sóng"android: text = "Ví dụ về phát sóng" android: layout_alignParentTop = "true"android: layout_alignParentTop = "true" android: layout_centerHorizontal = "true"android: layout_centerHorizontal = "true" android: textSize = "30dp" />android: textSize = "30dp" /> <TextView<TextView android: id = "@ + id / textView2"android: id = "@ + id / textView2" android: layout_width = "wrap_content"android: layout_width = "wrap_content" android: layout_height = "wrap_content"android: layout_height = "wrap_content" android: text = "Hướng dẫn điểm"android: text = "Hướng dẫn điểm" android: textColor = "# ff87ff09"android: textColor = "# ff87ff09" android: textSize = "30dp"android: textSize = "30dp" android: layout_above = "@ + id / imageButton"android: layout_above = "@ + id / imageButton" android: layout_centerHorizontal = "true"android: layout_centerHorizontal = "true" android: layout_marginBottom = "40dp" />android: layout_marginBottom = "40dp" /> <ImageButton<ImageButton android: layout_width = "wrap_content"android: layout_width = "wrap_content" android: layout_height = "wrap_content"android: layout_height = "wrap_content" android: id = "@ + id / imageButton"android: id = "@ + id / imageButton" android: src = "@ drawable / abc"android: src = "@ drawable / abc" android: layout_centerVertical = "true"android: layout_centerVertical = "true" android: layout_centerHorizontal = "true" />android: layout_centerHorizontal = "true" /> <Nút<Nút android: layout_width = "wrap_content"android: layout_width = "wrap_content" android: layout_height = "wrap_content"android: layout_height = "wrap_content" android: id = "@ + id / button2"android: id = "@ + id / button2" android: text = "Mục đích phát sóng"android: text = "Mục đích phát sóng" android: onClick = "broadcastIntent"android: onClick = "broadcastIntent" android: layout_below = "@ + id / imageButton"android: layout_below = "@ + id / imageButton" android: layout_centerHorizontal = "true" />android: layout_centerHorizontal = "true" /> </ RelativeLayout></ RelativeLayout>Hãy thử chạy Hello World đã sửa đổi của chúng ta ! ứng dụng chúng tôi vừa sửa đổi. Tôi cho rằng bạn đã tạo AVD của mình trong khi thiết lập môi trường.
Để chạy ứng dụng từ Android studio, 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 Chạy biểu tượng từ thanh công cụ.
Android Studio cài đặt ứng dụng trên AVD của bạn và khởi động ứng dụng và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, ứng dụng sẽ hiển thị cửa sổ Trình mô phỏng sau
![]() |
| ảnh minh họa |
Bây giờ để phát sóng ý định tùy chỉnh của chúng ta, hãy nhấp vào nút Intent Broadcast , điều này sẽ phát sóng ý định tùy chỉnh của chúng tôi "com.
tutorialspoint.CUSTOM_INTENT" sẽ bị chặn bởi MyReceiver BroadcastReceiver đã đăng ký của chúng tôi và theo logic thực hiện của chúng tôi, bánh mì nướng sẽ xuất hiện ở phía dưới của trình giả lập như sau
![]() |
| ảnh minh họa |
Bạn có thể thử triển khai BroadcastReceiver khác để chặn các hệ thống được tạo ra như hệ thống khởi động, ngày thay đổi, pin yếu, v.v.



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