Intent ngầm định (implicit intent)
Trong bài trước chúng ta đã tìm hiểu về Intent tường minh (explicit intent) – một cơ chế đòi hỏi chúng ta phải xác định rõ tên lớp Activity cần giao tiếp. Trong bài này chúng ta sẽ tìm hiểu về intent ngầm định – một cơ chế giao tiếp giữa các Activity dựa trên các kiểu hành động (actions) và kiểu dữ liệu được xử lý. Ví dụ chúng ta cần yêu cầu tải về một trang web và hiển thị trang web này đến người dùng. Với yêu cầu này chúng ta sẽ dùng kiểu hành động ACTION_VIEW kèm theo một URL của một trang web trong hình thức một đối tượng URI như sau:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://ngocminhtran.com")); startActivity(intent);
khi đối tượng intent trên được thực thi bởi một activity, hệ thống Android sẽ tìm các activity phù hợp trên thiết bị Android để thực thi hành động ACTION_VIEW yêu cầu dữ liệu theo giao thức http. Nếu tìm thấy Activity phù hợp (giống như một trình duyệt web) thì Activity này sẽ được trả về, ngược lại, người dùng sẽ nhận một cảnh báo. Chúng ta sẽ cùng tìm hiểu kỹ hơn về cách thức hoạt động của Intent ngầm định qua ứng dụng minh họa sau đây.
Ứng dụng Android dùng intent ngầm định
Tạo ứng dụng
Tạo một ứng dụng mới tên ImplicitIntent, nhập ngocminhtran.com trong Company Domain, chọn Phone and Tablet và API 14, chọn Empty Activity và nhập tên ImplicitIntentActivity trong Activity Name và activity_implicit_intent tương ứng trong Layout Name.
Mở tập tin activity_implicit_intent.xml trong chế độ Design, xóa TextView “Hello World!” mặc định, thêm một Button với giá trị thuộc tính ID và Text lần lượt là:
View | ID | Text |
Button | button | Show Web Page |
Định vị Button trên giao diện như sau:
Tạo Intent ngầm định
Mở tập tin ImplicitIntentActivity.java và thêm phương thức showWebPage() như sau:
public class ImplicitIntentActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_implicit_intent); } public void showWebPage(View view) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.ngocminhtran.com")); startActivity(intent); } }
Cần import:
import android.content.Intent; import android.net.Uri; import android.view.View;
Trở lại tập tin activity_implicit_intent.xml trong chế độ Text và thêm thuộc tính onClick để gọi phương thức showWebPage() trong phần tử <Button>:
<Button android:id="@+id/button" android:text="Show Web Page" android:onClick="showWebPage" .../>
Thực thi ứng dụng và nhấn nút SHOW WEB PAGE, một trình duyệt web sẽ xuất hiện và tải trang web ngocminhtran.com (nếu có kết nối Internet) đến người dùng.
Lời kết
Trong bài này chúng ta đã tìm hiểu kiểu Intent ngầm định và đã thực hiện tạo một ứng dụng minh họa dùng Intent này. Source code hoàn chỉnh các tập tin của ứng dụng ImplicitIntent có thể xem tại GitHub. Trong bài kế tiếp chúng ta sẽ tìm hiểu một dạng Intent đặc biệt được gọi là broadcast intent.
Ý kiến bài viết