Hướng dẫn lập trình cơ bản với Android - Phần 16

Activity, Service và BroadCast Receiver sử dụng Intent Filter để thông báo cho hệ

thống biết các dạng Implicit Intent mà nó có thể xử lý. Nói cách khá c, Intent Filter

là bộ lọc Intent, chỉ cho những Intent được phép đi qua nó.

Intent Filter mô tả khả năng của component định nghĩa nó. Khi hệ thống bắt được 1

Implicit Intent (chỉ chứa 1 số thông tin chung chung về action, data và category.),

nó sẽ sử dụng những thông tin trong Intent này, kiểm tra đối chiếu với Intent Filter

của các component các ứng dụng, sau đó quyết định khởi chạy ứng dụng nào thích

hợp nhất để xử lý Intent bắt được. Nếu có 2 hay nhiều hơn ứng dụng thích hợp,

người dùng sẽ được lựa chọn ứng dụng mình muốn.

pdf7 trang | Chuyên mục: Android | Chia sẻ: dkS00TYs | Lượt xem: 1550 | Lượt tải: 1download
Tóm tắt nội dung Hướng dẫn lập trình cơ bản với Android - Phần 16, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 Đã xong sử dụng Explicit, giờ đến lượt Implicit Intent. Trước khi đi vào ví dụ, hãy 
dạo qua 1 chút kiến thức về Intent Filter và vai trò của nó. 
Intent Filter là gì 
Activity, Service và BroadCast Receiver sử dụng Intent Filter để thông báo cho hệ 
thống biết các dạng Implicit Intent mà nó có thể xử lý. Nói cách khác, Intent Filter 
là bộ lọc Intent, chỉ cho những Intent được phép đi qua nó. 
Intent Filter mô tả khả năng của component định nghĩa nó. Khi hệ thống bắt được 1 
Implicit Intent (chỉ chứa 1 số thông tin chung chung về action, data và category...), 
nó sẽ sử dụng những thông tin trong Intent này, kiểm tra đối chiếu với Intent Filter 
của các component các ứng dụng, sau đó quyết định khởi chạy ứng dụng nào thích 
hợp nhất để xử lý Intent bắt được. Nếu có 2 hay nhiều hơn ứng dụng thích hợp, 
người dùng sẽ được lựa chọn ứng dụng mình muốn. 
VD: 
Mã: 
 <activity android:name=".ExampleActivity" 
android:label="@string/activity_name"> 
 <action 
android:name="android.intent.action.SENDTO" /> 
 <category 
android:name="android.intent.category.DEFAULT" /> 
Trên là 1 Activity với bộ lọc Intent cho phép bắt và xử lý các Intent gửi SMS. Hãy 
lưu ý từ khóa 
Mã: 
andoid:scheme 
Từ khóa này cho biết protocol (luật) để xử lý dữ liệu trong URI. Nói 1 cách đơn 
giản thì nó là kiểu của dữ liệu. 1 số kiểu khác như http, https, fpt, content... 
Using Implicit Intent: 
Yêu cầu: Xây dựng chương trình nhập số và gọi. Lưu ý chương trình của mình ở 
đây chỉ xây dựng đến mức khi nhấn nút Call của di động thì sẽ chạy ứng dụng và 
hiển thị giao diện cho phép nhập số. Phần gọi dành cho ai yêu thích tìm hiểu thêm 
^_^ Phần này không hề khó nhưng ở đây mình chỉ muốn minh họa Implicit Intent 
nên sẽ không đưa vào. 
B1: Khởi tạo project: File -> New -> Android Project 
Project name: Implicit Intent Example 
Build Target: Chọn Android 1.5 
Application name: Implicit Intent Example 
Package name: at.exam 
Create Activity: Example 
=> Kích nút Finish. 
B2: Đây là bước quan trọng nhất và cũng là bước có ý nghĩa duy nhất trong cả 
project này, các bước còn lại chỉ là bước râu ria mà mình thêm vào cho cái project 
nó ra hồn 1 chút. Bước này sẽ thêm 1 bộ lọc Intent Filter vào cho activity Example 
của chúng ta để bắt sự kiện nhấn nút Call của di động 
-> Vào AndroidManifest.xml chỉnh sửa như sau: 
Mã: 
<manifest 
xmlns:android="
id" 
 package="at.exam" 
 android:versionCode="1" 
 android:versionName="1.0"> 
 <application android:icon="@drawable/icon" 
android:label="@string/app_name"> 
 <activity android:name=".Example" 
 android:label="@string/app_name"> 
 <action 
android:name="android.intent.action.MAIN" /> 
 <category 
android:name="android.intent.category.LAUNCHER" /> 
 <action 
android:name="android.intent.action.CALL_BUTTON" /> 
 <category 
android:name="android.intent.category.DEFAULT" /> 
Thực chất chỉ là bổ sung thêm dòng chữ đỏ mình đánh dấu thôi ^_^ 
B3: Xây dựng giao diện trong main.xml, bước này ko quan trọng, chỉ là râu ria cho 
activity có cái giao diện: 
Mã: 
<LinearLayout 
xmlns:android="
id" 
 android:layout_width="fill_parent" 
 android:layout_height="fill_parent" 
 android:orientation="vertical" 
 > 
 <TextView 
 android:paddingTop="10px" 
 android:id="@+id/number_display" 
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content" 
 android:textSize="30px" 
 android:gravity="center" 
 android:lines="2" 
 android:background="#ffffff" 
 android:textColor="#000000" 
 /> 
 <TableLayout 
xmlns:android="
id" 
 android:layout_width="fill_parent" 
 android:layout_height="fill_parent" 
 > 
 <TableRow 
 android:gravity="center" 
 android:paddingTop="30px" 
 > 
 <Button 
 android:id="@+id/button1" 
 android:layout_width="80px" 
 android:layout_height="80px" 
 android:gravity="center" 
 android:text="1" 
 android:textSize="25px" 
 /> 
 <Button 
 android:id="@+id/button2" 
 android:layout_width="80px" 
 android:layout_height="80px" 
 android:gravity="center" 
 android:text="2" 
 android:textSize="25px" 
 /> 
 <Button 
 android:id="@+id/button3" 
 android:layout_width="80px" 
 android:layout_height="80px" 
 android:gravity="center" 
 android:text="3" 
 android:textSize="25px" 
 /> 
 <TableRow 
 android:gravity="center" 
 > 
 <Button 
 android:id="@+id/button4" 
 android:layout_width="80px" 
 android:layout_height="80px" 
 android:gravity="center" 
 android:text="4" 
 android:textSize="25px" 
 /> 
 <Button 
 android:id="@+id/button5" 
 android:layout_width="80px" 
 android:layout_height="80px" 
 android:gravity="center" 
 android:text="5" 
 android:textSize="25px" 
 /> 
 <Button 
 android:id="@+id/button6" 
 android:layout_width="80px" 
 android:layout_height="80px" 
 android:gravity="center" 
 android:text="6" 
 android:textSize="25px" 
 /> 
 <TableRow 
 android:gravity="center" 
 > 
 <Button 
 android:id="@+id/button7" 
 android:layout_width="80px" 
 android:layout_height="80px" 
 android:gravity="center" 
 android:text="7" 
 android:textSize="25px" 
 /> 
 <Button 
 android:id="@+id/button8" 
 android:layout_width="80px" 
 android:layout_height="80px" 
 android:gravity="center" 
 android:text="8" 
 android:textSize="25px" 
 /> 
 <Button 
 android:id="@+id/button9" 
 android:layout_width="80px" 
 android:layout_height="80px" 
 android:gravity="center" 
 android:text="9" 
 android:textSize="25px" 
 /> 
 <TableRow 
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content" 
 android:gravity="center" 
 > 
 <Button 
 android:id="@+id/button_star" 
 android:layout_width="80px" 
 android:layout_height="80px" 
 android:gravity="center" 
 android:text="*" 
 android:textSize="25px" 
 /> 
 <Button 
 android:id="@+id/button0" 
 android:layout_width="80px" 
 android:layout_height="80px" 
 android:gravity="center" 
 android:text="0" 
 android:textSize="25px" 
 /> 
 <Button 
 android:id="@+id/button_clear" 
 android:layout_width="80px" 
 android:layout_height="80px" 
 android:gravity="center" 
 android:text="Clear" 
 android:textSize="25px" 
 /> 
LinearLayout chứa 1 TextView để hiển thị số nhấn, 1 TableLayout có các Button 
tương ứng với các số và 1 Button để clear cho TextView. 

File đính kèm:

  • pdfHướng dẫn lập trình cơ bản với Android - Phần 16.pdf