Broadcast Receivers: dùng để nhận các tín hiệu từ hệ thống hoặc trao đổi dữ liệu các ứng dụng khác . Chắc hẳn nhiều bạn mới học lập trình Android mà có tính tò mò thì sẽ tự hỏi “khi có một tin nhắn đến phần mềm làm sao có thể biết được tin nhắn đến” hay là làm sao để biết có cuộc gọi đến? đang sạc pin hay đã rút sạc,…. Android cung cấp riêng một thành phần Broadcast Receiver dùng để nhận biết các thông tin đó từ hệ điều hành.
Có sau hai bước quan trọng để làm cho Broadcast Receiver làm việc theo ý muốn
- Tạo Broadcast Receiver.
- Việc đăng ký Broadcast Receiver
Tạo Broadcast Receiver
Một ứng dụng muốn thu nhận tín hiệu thì cần thực hiện như một lớp con của lớp Broadcast Receiver và trong phương thức onReceive () mà mỗi tin nhắn được nhận như là một tham số Intent đối tượng.
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive ( Context context , Intent intent ) {
Toast . makeText ( context , "Intent . Phát hiện " , bánh mì nướng . LENGTH_LONG .) Chương trình ();
}
}
Việc đăng ký Broadcast Receiver
Một ứng dụng muốn thu nhận tín hiệu thì phải đăng ký trong file AndroidManifest.xml . Hãy xem ví dụ đăng ký MyReceiver cho hệ thống để tạo sự kiện có tên ACTION_BOOT_COMPLETED khi hệ thống Android đã hoàn thành quá trình khởi động.
BROADCAST-RECEIVER
<application
android:icon = "@drawable/ic_launcher"
android:label = "@string/app_name"
android:theme = "@style/AppTheme" >
<receiver android:name = "MyReceiver" >
<intent-filter>
<action android: tên = "android.intent.action.BOOT_COMPLETED" >
</ action>
</ intent-filter>
</ nhận>
</ application>
Bây giờ mỗi khi thiết bị Android của bạn được khởi động, nó sẽ bị chặn bởi Broadcast Receiver MyReceiver và thực hiện bởi onReceive ()
Có một số hệ thống tạo ra các sự kiện được định nghĩa trong lớp Intent . Bảng dưới đây liệt kê một số sự kiện hệ thống quan trọng.
Liên tục tổ chức sự kiện | Sự miêu tả |
---|---|
android.intent.action.BATTERY_CHANGED | phát dữ liệu về tình trạng, mức độ, và các thông tin khác về pin. |
android.intent.action.BATTERY_LOW | Chỉ ra tình trạng pin thấp trên thiết bị. |
android.intent.action.BATTERY_OKAY | Tình trạng pin ổn định |
android.intent.action.BOOT_COMPLETED | Điều này được phát sóng một lần, sau khi hệ thống đã hoàn tất khởi động. |
android.intent.action.BUG_REPORT | Hiển thị hoạt động cho báo cáo lỗi. |
android.intent.action.CALL | Thực hiện một cuộc gọi đến một người nào đó theo quy định của dữ liệu. |
android.intent.action.CALL_BUTTON | Người dùng nhấn nút "gọi" để đi đến trình quay số hoặc giao diện người dùng phù hợp khác để đặt một cuộc gọi. |
android.intent.action.DATE_CHANGED | Thay đổi ngày |
android.intent.action.REBOOT | Khởi động lại thiết bị |
Tùy chỉnh Broadcasting Intents
Nếu bạn muốn một ứng dụng tạo ra và gửi các thông điệp thì bạn phải tạo ra và gửi những ý đồ bằng cách sử dụng các 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 pháp sendStickyBroadcast(Intent) có nghĩa là Intent bạn đang gửi ra xung quanh sau khi broadcast hoàn tất.
public void broadcastIntent ( View view )
{
Intent intent = new Intent ();
intent . setAction ( "com.tutorialspoint.CUSTOM_INTENT" );
sendBroadcast ( intent );
}
com.tutorialspoint.CUSTOM_INTENT cũng có thể được đăng ký theo cách tương tự như chúng ta đã đăng ký hệ thống bình thường.
package com.example.My Application; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show(); } }
Thí dụ
Ví dụ này sẽ giải thích cho bạn làm thế nào để tạo ra Broadcast Receiver . Một khi bạn đã quen thuộc với mục đích tùy chỉnh, sau đó bạn có thể lập trình ứng dụng của bạn để điều khiển hoạt động của hệ thống. Vì vậy, hãy làm theo các bước sau để sửa đổi các ứng dụng Android với ứng dụng Hello World
Bước đi | Sự miêu tả |
---|---|
1 | Bạn sẽ sử dụng Android studio để tạo ra một ứng dụng Android và đặt tên cho nó trong một gói com.example.My Application |
2 | Sửa đổi hoạt động tập tin trong MainActivity.java thêmbroadcastIntent () |
3 | Tạo một file java mới gọi là MyReceiver.java trong gói com.example để xác định một BroadcastReceiver. |
4 | Một ứng dụng có thể xử lý một hoặc nhiều ý đồ tùy chỉnh và hệ thống mà không bị bất kỳ hạn chế nào. |
5 | Sửa đổi các nội dung mặc định của tập tin res / layout / activity_main.xml bao gồm các nút để tạo broadcast. |
6 | Không cần phải sửa đổi các chuỗi tập tin , Android studio bảo vệ file string.xml. |
7 | Chạy ứng dụng để khởi động giả lập Android và xác minh các kết quả của những thay đổi được thực hiện trong các ứng dụng. |
Sau đây là nội dung của tập tin hoạt động chính sửa đổi src / com.example.My Application / MainActivity.java . Tập tin này có thể bao gồm mỗi phương pháp chu kỳ cơ bản.Chúng tôi đã thêm phương pháp broadcastIntent () để phát sóng một thông điệp tùy chỉnh.
Sau đây là nội dung của src / com.example.My Application / MyReceiver.java :
Sau đây sẽ các nội dung sửa đổi của AndroidManifest.xml file. Ở đây, chúng tôi đã thêm vào <service ... /> để đề cập đến các dịch vụ của chúng tôi:
Sau đây là nội dung của tập tin res / layout / activity_main.xml vào một nút để tùy chỉnh phát sóng.
Sau đây sẽ là nội dung của res / values / strings.xml để xác định hai hằng số mới -
<resources> <string name="menu_settings">Settings</string> <string name="title_activity_main">My Application</string> </resources>
Để chạy các ứng dụng từ Android studio, một mở các tập tin hoạt động của dự án của bạn và bấm Chạy
(biểu tượng trên thanh công cụ). Android Studio cài đặt các ứng dụng trên AVD của bạn và bắt đầu nó và nếu mọi thứ làm chuẩn, nó sẽ hiển thị cửa sổ Emulator
(biểu tượng trên thanh công cụ). Android Studio cài đặt các ứng dụng trên AVD của bạn và bắt đầu nó và nếu mọi thứ làm chuẩn, nó sẽ hiển thị cửa sổ Emulator
0 nhận xét:
Đăng nhận xét