Trường ĐH Quang Trung
KHOA CNTT
Lập trình Android
Bài 4: Intent
2017
Nội dung
1.
Cơ chế hoạt động
2.
Các dạng Intent
3.
Các tham số
4.
Thực thi một Intent
5.
Gửi và phản hồi Intent trong Activity
6.
DialogBox
Lập trình Android
2
1.1. Cơ chế hoạt động
Intent được sử dụng để truyền tải thông điệp, yêu cầu một
hành động xử lý từ thành phần được gọi.
Intent được sử dụng trong ba trường hợp chính:
Khởi động Activity
Chuyển thông điệp đến
BroadcastReceiver
Khởi động Service
Lập trình Android – Module 1
3
1.2 Các dạng intent
Intent được chia làm hai dạng:
● Explicit Intent: chỉ định rõ thành phần xử lý thông qua tên lớp,
thường được dùng để gọi đến các thành phần trong cùng ứng
dụng.
● Implicit Intent: không chỉ định rõ thành phần xử lý, thay vào
đó bổ sung các thuộc tính như: mô tả hành động, dạng dữ
liệu…
Lập trình Android – Module 1
4
1.3 Các tham số
Các tham số chính của intent:
1. Action: Thực hiện một action được xây dựng sẵn như:
ACTION_VIEW, ACTION_EDIT, ACTION_MAIN, … hoặc một
activity do người dùng tạo ra
2. Data: là dữ liệu sẽ được xử lý trong action, thường được diễn tả
là một Uri (Uniform Resource Identifier)
Lập trình Android – Module 1
5
1.4. Thực thi một intent
Để gọi một intent ta thực hiện
Lập trình Android – Module 1
6
1.4. Thực thi một intent
Ví dụ
ACTION_DIAL tel:123
Hiển thị màn hình gọi với số gọi là 123
ACTION_VIEW
Hiển thị trang tìm kiếm google trong trình duyệt web
ACTION_EDIT content://contacts/people/2
Hiển thị màn hình chỉnh sửa thông tin về người với mã danh 2
ACTION_VIEW content://contacts/people/2
Hiển thị thông tin về người với mã danh 2
Lập trình Android – Module 1
7
1.4. Thực thi một intent
Một số Action thường dùng trong intent
ACTION_ANSWER - Mở Activity để xử lý cuộc gọi tới
ACTION_CALL - Mở 1 Phone Dialer và thực hiện cuộc gọi
ACTION_DELETE - Mở Activity cho phép xóa dữ liệu mà địa chỉ
của nó chứa trong data URI
ACTION_SEND – Mở 1 Activity cho phép gửi dữ liệu lấy từ data
URI, kiểu dữ liệu xác định trong thuộc tính type
ACTION_SENDTO – Mở 1 Activity cho phép gửi dữ liệu lấy từ data
URI
ACTION_VIEW – Mở 1 Activity để hiển thị dữ liệu trong data URI
ACTION_MAIN – Khởi chạy để sử dụng một Activity
Lập trình Android – Module 1
8
1.4. Thực thi một intent
Ví dụ
Hiển thị màn hình gọi với số gọi
Intent intent = new Intent ((Intent.ACTION_DIAL, Uri.parse( "tel:
+84986490101"));
startActivity(intent);
Tìm kiếm từ khóa “lập trình android” trên trang tìm kiếm mặc định
của trình duyệt web
Intent intent = new Intent (Intent.ACTION_WEB_SEARCH );
intent.putExtra(SearchManager.QUERY, “lập trình android");
startActivity(intent);
Lập trình Android – Module 1
9
1.4. Thực thi một intent
Ví dụ
Hiển thị ảnh sử dụng thuộc tính mở rộng
Intent myIntent = new Intent();
myIntent.setType("image/pictures/*");
myIntent.setAction(Intent.ACTION_GET_CONTENT);
startActivity(myIntent);
Sử dụng trình duyệt web mở trang youtube.com
Thêm dòng lệnh vào AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
Lập trình Android – Module 1
10
1.4. Thực thi một intent
Ví dụ
Hiển thị google map
String geoCode = "geo:0,0?q=1860+east+18th+street+cleveland+oh";
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(geoCode));
startActivity(intent);
Thêm dòng lệnh vào AndroidManifest.xml:
android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
Lập trình Android – Module 1
11
1.4. Thực thi một intent
Ví dụ
Tìm đường đi từ vị trí A đến vị trí B
Mở ứng dụng nghe nhạc
Lập trình Android – Module 1
12
1.4. Thực thi một intent
Ví dụ
Mở một bài hát được lưu trữ trong thẻ nhớ SD
Lập trình Android – Module 1
13
1.4. Thực thi một intent
Ví dụ
Gửi một tin nhắn SMS có đính kèm hình ảnh
Lập trình Android – Module 1
14
1.4. Thực thi một intent
Ví dụ
Gửi email đến một địa chỉ nào đó.
Lập trình Android – Module 1
15
1.4. Thực thi một intent
Ví dụ
Xây dựng ứng dụng thực hiện gọi điện đến một số bất kỳ
Lập trình Android – Module 1
16
1.4. Thực thi một intent
Thêm dòng lệnh vào AndroidManifest.xml:
<uses‐permission android:name="android.permission.CALL_PHONE" />
Lập trình Android – Module 1
17
1.5. Gửi và phản hồi Intent trong Activity
Việc gửi và phản hồi Intent trong Activity được chia làm 3 bước
● Bước 1: Gửi Intent thông qua phương thức startActivityForResult() bao gồm
2 tham số:
Intent: dữ liệu cần gửi để xử lý.
requestCode: mã yêu cầu xử lý từ phía gửi
● Bước 2: nhận và xử lý Intent, sau đó xác nhận thông tin phản hồi thông qua
phương thức setResult() trong thành phần ứng dụng phản hồi
Khởi tạo đối tượng Intent, thiết lập các thuộc tính cần thiết: action,
category…
Gửi dữ liệu phản hồi trực tiếp vào Intent hoặc thông qua biến Bundle
Gọi phương thức setResult với tham số truyền vào là Intent
● Bước 3: Gọi phương thức onActivityResult() truy xuất ba tham số
requestCode: mã yêu cầu giải quyết với intent tương ứng
resultCode: mã kết quả nhận về từ phía phản hồi
intent: dữ liệu nhận về từ phía phản hồi
Lập trình Android – Module 1
18
1.5. Gửi và phản hồi Intent trong Activity
Mô hình
Lập trình Android – Module 1
19
1.5. Gửi và phản hồi Intent trong Activity
Ví dụ
1. Gửi một yêu cầu hiển thị tất cả file video và image
public void showSoundTrack()
{
Intent myintent=new Intent();
myintent.setType("video/*, images/*");
myintent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(myintent,0);
}
Lập trình Android – Module 1
20
1.5. Gửi và phản hồi Intent trong Activity
Ví dụ
2. Nhận kết quả trả về bằng cách cài đặt phương thức onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent
data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==0&&resultCode==RESULT_OK)
{
String selectimage=data.getDataString();
Toast.makeText(this,selectimage,1).show();
Intent myAct3=new Intent(Intent.ACTION_VIEW,
Uri.parse(selectimage));
startActivity(myAct3);
}
}
Lập trình Android – Module 1
21
1.5. Gửi và phản hồi Intent trong Activity
Có hai cách gửi dữ liệu vào Intent
● Trực tiếp
Dùng phương thức putExtra(Key, Value) thiết lập trực tiếp vào Intent
● Thông qua Bundle
Tạo đối tượng Bundle, dùng phương thức set<KDL>(Key, Value) vào đối
tượng Bundle
Dùng phương thức putExtras() gửi Bundle vào Intent
Lập trình Android – Module 1
22
1.5. Gửi và phản hồi Intent trong Activity
Truy xuất:
● Truy xuất dữ liệu trực tiếp Extras
Dùng phương thức
get<KDL>Extra(Key,DefaultValue) để truy xuất dữ
liệu Intent
● Thông qua Bundle
Dùng phương thức getExtras() để truy xuất đối
tượng Bundle trong Intent
Dùng phương thức get<KDL>(Key, DefaultValue)
để truy xuất dữ liệu trong Bundle
Lập trình Android – Module 1
23
1.5. Gửi và phản hồi Intent trong Activity
Truy xuất:
● Ví dụ: truy xuất số nguyên được gửi trong Intent
Trực tiếp:
Intent intent=getIntent();
Int soNguyenX= intent.getInteExtra(“SoNguyenX”),0)
Thông qua Bundle:
Intent intent=getIntent();
Bundle bundle=intent.getExtras();
Int soNguyenX=bundle.getInt(“SoNguyenX”,0)
Lập trình Android – Module 1
24
1.6. DialogBox
AlertDialog
Cấu trúc
Lập trình Android – Module 1
25