Bài viết giới thiệu tổng quan về Intent Filter cho những người học lập trình android .
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ã:


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ã:

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ố. 
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ã:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/andro
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">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action
android:name="android.intent.action.CALL_BUTTON" />
<category
android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>

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ã:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/andro
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="http://schemas.android.com/apk/res/andro
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>
<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>
<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>
<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"
/>
</TableRow>
</TableLayout>
</LinearLayout>
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.

0 nhận xét:

Đăng nhận xét

 
Top