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

Hướng dẫn lập trình Android bài 4

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 (88.06 KB, 16 trang )

Bài 4: Intent và truyền nhận dữ liệu giữa các Activity


Nội dung bài học

1.
2.
3.

Intent
Intent - filter
Truyền nhận dữ liệu giữa các Activity


Intent
1.1. Khái niệm về Intent

-

Intent là một cấu trúc dữ liệu dạng tin nhắn làm cầu nối giữa các Activity, Service,
Broadcast trong một ứng dụng hoặc giữa các ứng dụng.


Intent
1.2. Các thuộc tính của một đối tượng Intent
Thuộc tính chính
Action

Thuộc tính phụ
Category – Thông tin về nhóm của action


- Tên (String) của action mà Intent sẽ yêu cầu thực
hiện.
- Có thể là action được Android định nghĩa sẵn, có
thể là do người lập trình định nghĩa.

Type – định dạng kiểu dữ liệu (Chuẩn MIME).
Thường được tự động xác định.

Data

- Dữ liệu mà Activity được gọi sẽ xử lý.
- Định dạng là Uri (thông qua hàm Uri.parse(data)

Component- Chỉ định cụ thể lớp sẽ được thực thi
Activity

Extras – Chứa tất cả các cặp (key – value) do ứng
dụng thêm vào để truyền dữ liệu qua Intent


Intent
1.3. Phân loại Intent


-

Intent tường minh:
Intent tường minh là intent dùng thuộc tính phụ để chỉ đích danh tên lớp sẽ thực thi Activity.

Intent intent = new Intent(MainActivity.this, SecondActivity.class);

startActivity(intent);



Intent không tường mình:

-

Intent không tường minh là intent không chỉ định một lớp cụ thể mà thay vào đó dùng các dữ liệu khác
(action, data, type...) và để hệ thống tự quyết định xem lớp nào (app nào) sẽ thích hợp để đáp ứng intent đó.

-

Thông tin action và category của activity trong một app đáp ứng intent đó phải được khai báo trong
Manifest của app (AndroidManifest.xml) dưới dạng Intent-filter (tất nhiên nếu chúng ta muốn gọi một builtin action thì ta không cần quan tâm đến vấn đề này).


Intent
Ví dụ:
Intent intent = new Intent (Intent.ACTION_VIEW,
Uri.parse(""));
startActivity(intent);

-

Trong trường hợp này chúng ta muốn mở trang web Google chúng ta cần khai báo thêm
quyền truy cập internet trong file Manifest như sau:

<uses-permission android:name="android.permission.INTERNET"/>



Intent

 Các action định nghĩa sẵn


Intent

Ví dụ:
- Quay một số điện thoại
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:098746422"));
startActivity(intent);
- Hiển thị danh bạ điện thoại
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("content://contacts/people/"));
startActivity(intent);
- Chuỗi data trong hàm Uri.parse(data) là định dạng dữ liệu ContentProvider.


Intent


Các Action tương ứng được định nghĩa sẵn


Intent - filter
2.1. Khái niệm

-


IntentFilter là thành phần giúp cho hệ thống Android biết được ứng dụng của bạn có
thể làm được những gì.

-

Tất cả các Activity, Service và BroadCast Receiver đều sử dụng IntentFilter để thông
báo cho hệ thống biết các dạng Intent không tường minh mà nó có thể xử lý. Nói cách
khác, IntentFilter là bộ lọc chỉ cho những Intent mà nó hiểu được phép đi qua nó.
Intent Filter mô tả khả năng của component định nghĩa nó.


Intent - filter

1.
2.

Ví dụ:
Tạo giao diện layout demo_intentent_filter.xml có một TextView
Tạo 1 activity thứ 2 trong src là DemoIntenFilter
public class DemoIntenFilter extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.demo_intentent_filter);
}
}
3. Trong file Manifest khai báo như sau:
 

android:name=".DemoIntenFilter"
android:label="Demo intent filter" >
<intent-filter>
<action android:name="android.intent.action.CALL_PRIVILEGED" />
 
<category android:name="android.intent.category.DEFAULT" />
 
<data android:scheme="tel" />
</intent-filter>
</activity>
4. Ra màn hình home thực hiện cuộc gọi sẽ thấy hiển thị ứng dụng của chúng ta.


Truyền nhận dữ liệu giữa các Activity

3.1. Truyền dữ liệu

 Cú pháp:
intent.putExtra(name, value);
intent: Là một đối tượng intent.
name: Là tên của dữ liệu.
value: Là giá trị mà các bạn muốn truyền sang Activity khác.


Truyền nhận dữ liệu giữa các Activity

 Ví dụ:
Intent intent = new Intent();
intent.putExtra("KEY_AGE", 19);



Truyền nhận dữ liệu giữa các Activity

3.2. Nhận dữ liệu

 Cú pháp:
getIntent().getExtras().get(key);
key: Chính là name khi truyền dữ liệu.


Truyền nhận dữ liệu giữa các Activity

 Ví dụ:
int age = getIntent().getExtras().get(("KEY_AGE");

 Chú ý:
- Có thể khởi động một activity với một yêu cầu nào đó và activity kia khi làm xong công việc
sẽ trả lại kết quả cho activity trước.

-

Ví dụ activity A yêu cầu một activity làm giúp việc chụp ảnh, activity B đáp ứng được việc
này, sau khi user chụp ảnh xong sẽ trả lại file ảnh cho activity A.


Q&A




×