Tải bản đầy đủ (.pptx) (37 trang)

Intent, broadcast receiver, service

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (398.9 KB, 37 trang )

Công nghệ mới trong
phát triển hệ thống thông tin
Chuyên đề: Phát triển ứng dụng
trên môi trường Android
Bài 6: Intent, Broadcast Receiver, Service
TS. Trần Minh Triết
Khoa Công nghệ Thông tin
Trường ĐH Khoa học Tự nhiên
Tham khảo

Nội dung của bài giảng có sử dụng:

Tài liệu, bài giảng của ThS. Nguyễn Trung Hiếu, Trung tâm Tin học trường ĐH Khoa học Tự
nhiên, ĐHQG-HCM

Tài liệu, bài giảng của ThS. Bùi Tấn Lộc, Khoa Công nghệ Thông tin, trường ĐH Khoa học Tự
nhiên, ĐHQG-HCM

Website:
2
Nội Dung

Intent

Broadcast Receiver

Service
3
Intents

Intents:



được sử dụng như một kĩ thuật để truyền thông điệp trong một ứng dụng hay giữa các ứng
dụng.

Intents có khả năng:

Kích hoạt một activity hay service

Khai báo việc thực hiện một chức năng của activity hay service

Thông báo một event hay action xảy ra
4
Intents

Mục đích sử dụng Intent phổ biến:

Khởi động tường minh các activities bằng cách mô tả đối tượng thực hiện.

Khởi động ngầm định các activities bằng cách yêu cầu thực hiện chức năng của activities đó
trên dữ liệu cho trước.

Ngoài ra, Intent dùng để broadcast thông điệp

Ví dụ: thông báo trạng thái kết nối Internet, trạng thái pin, cuộc gọi đến, nhận tin nhắn…
5
Intents

Sử dụng phương thức startActivity() để chạy một Activity

startActivity(myIntent);


Tìm và khởi động activity như myIntent mô tả

startActivityForResult();

Khởi động một activity có khả năng trả về dữ liệu
6
Intents

Khởi động tường minh một Activity

Sau khi gọi hàm startActivity(), MyOtherActivity được tạo ra ở trạng thái visible và
active.

Gọi hàm finish() hay bấm nút back để đóng Activity mới.
7
Intent intent = new Intent(MyActivity.this, MyOtherActivity.class);
startActivity(intent);
Intents

Khởi động ngầm định một Activity

Ví dụ: cho phép người dùng gọi điện thoại từ ứng dụng của họ bằng cách yêu cầu
ACTION_DIAL với số điện thoại trong URI
8
if (muốn gọi điện thoại) {
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:555-2368"));
startActivity(intent);
}
Intents


Khởi động tường minh sub-activity trả về dữ liệu

Request code:

Dùng để xác nhận sub-activity trả về kết quả

Ví dụ: SHOW_SUBACTIVITY
9
private static final int SHOW_SUBACTIVITY = 1;
Intent intent = new Intent( this, MyOtherActivity.class);
startActivityForResult(intent, SHOW_SUBACTIVITY);
Intents

Khởi động ngầm định sub-activity

Action: ACTION_PICK

Request code: PICK_CONTACT_SUBACTIVITY
10
private static final int PICK_CONTACT_SUBACTIVITY = 2;
Uri uri = Uri.parse("content://contacts/people");
Intent intent = new Intent(Intent.ACTION_PICK, uri);
startActivityForResult(intent, PICK_CONTACT_SUBACTIVITY);
Intents

setResult() được gọi trước finish() để trả về kết quả cho Activity chính.

setResult() cần hai tham số:


Mã kết quả (result code)

Dữ liệu (result)

Mã kết quả:

Activity.RESULT_OK hay

Activity.RESULT_CANCELED

Kết quả là một intent chứa dữ liệu trả về
11
Intents

Ví dụ: RESULT_OK
12
Button okButton = (Button) findViewById(R.id.ok_button);
okButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Uri data = Uri.parse("content://horses/" + selected_horse_id);
Intent result = new Intent(null, data);
result.putExtra(IS_INPUT_CORRECT, inputCorrect);
result.putExtra(SELECTED_PISTOL, selectedPistol);
setResult(RESULT_OK, result);
finish();
}
});
Intents

Ví dụ: RESULT_CANCEL

13
Button cancelButton = (Button) findViewById(R.id.cancel_button);
cancelButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
setResult(RESULT_CANCELED, null);
finish();
}
});
Intents

Xử lý các kết quả của sub-activity

Khi sub-activity kết thúc, hàm onActivityResult() được gọi trong lớp Activity chính

onActivityResult() handler

request code

result code

data
14
Intents
15
Intents

Actions trong Android

ACTION_ANSWER, ACTION_CALL, ACTION_DIAL


ACTION_DELETE, ACTION_INSERT, ACTION_EDIT

ACTION_PICK

ACTION_SEARCH

ACTION_SENDTO

ACTION_SEND

ACTION_VIEW

ACTION_WEB_SEARCH
16
Intents

Sử dụng Intent Filter

action android:name

category android:name

ALTERNATIVE

SELECTED_ALTERNATIVE

BROWSABLE

DEFAULT


GADGET

HOME

LAUNCHER
17
Intents

Sử dụng Intent Filter

data

android:host

android:mimetype

android:path

android:port

android:scheme
18
Intents

Ví dụ Intent Filter
19
Intents
20
Thực hành : Contact Picker
Nội Dung


Intent

Broadcast Receiver

Service
21
Broadcast Receiver

Sử dụng Broadcast Intent để gửi thông điệp giữa các ứng dụng

Android sử dụng broadcast intent để broadcast các event hệ thống

Battery-charging levels

Network connections

Incoming calls

Broadcast Receiver được thiết kế để nhận các broadcast intent
22
Broadcast Receiver

Cách thức gửi Broadcast Intent

Tạo một intent
Intent intent =new Intent("com.hieu.copyToApp");

Gọi hàm sendBroadcast() của Activity
sendBroadcast(intent);


Có hai dạng broadcast được nhận

Normal broadcast

được gửi bởi sendBroadcast()

Ordered broadcast

được gửi bởi sendOrderedBroadcast()
23
Broadcast Receiver

BroadcastReceiver được dùng để nhận các broadcast intents

Để sử dụng BroadcastReceiver, chương trình phải đăng kí trong file manifest hay
trong mã nguồn

Broadcast Receiver mới được kế thừa từ class BroadcastReceiver và override hàm
onReceive()
24
Broadcast Receiver

Mẫu hiện thực Broadcast Receiver

onReceiver() handler phải hoàn tất trong 5s nên broadcast receiver chỉ dùng để cập
nhật GUI, khởi động Service hay thông báo người dùng bởi Notification Manager
25

×