CĂN BẢN
INTENTS
GIAO DIỆN
CÁC KHÁI NIỆM
VÍ DỤ
TÀI LIỆU
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Implicit Intents trong Android

Android hỗ trợ 2 loại Intent khác nhau, thứ nhất là Intent tường minh (explicit) và thứ hai là Intent không tường minh (implicit). Implicit Intent trong Android còn gọi là Intent không tường minh vì nó không chỉ định tên của component sẽ bắt đầu.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Hôm nay chúng ta sẽ cùng nhau tìm hiểu về Implicit Intent.

1. Implicit Intent trong Android là gì?

Trong Android, Implicit Intent sẽ không chỉ định tên của component bắt đầu mà thay vào đó, nó chỉ rõ action cần được thực hiện và dữ liệu cho action đó, sau đó cho phép một component từ ứng dụng khác xử lý.

Ví dụ: Bằng cách sử dụng Implicit Intent, ta có thể yêu cầu một ứng dụng khác hiển thị vị trí của người dùng (như Grab, Maps,..).

Sau đây là hình ảnh minh họa cách Implicit Intent gửi yêu cầu đến hệ thống Android để bắt đầu activity.

Bài viết này được đăng tại [free tuts .net]

android implicit intents process flow png

Activity A tạo ra một intent và action rồi gửi đến hệ thống Android bằng phương thức startActivity () . Hệ thống Android sẽ đối chiếu intent filter với intent của tất cả các ứng dụng. Bất cứ khi nào tìm thấy kết quả khớp, hệ thống bắt đầu chuyển tới activity (Activity B) bằng cách gọi phương thức onCreate () .

Cụ thể hơn, khi tạo ra một implicit intent, hệ thống Android sẽ tìm kiếm component phù hợp bằng cách so sánh nội dung của intent với các intent filter được xác định trong file manifest của các ứng dụng khác trên thiết bị. Nếu tìm thấy chỉ một component phù hợp, hệ thống sẽ khởi động component luôn. Nếu nhiều component được khớp thì hệ thống sẽ hiển thị một dialog để người dùng có thể chọn ứng dụng nào sẽ được sử dụng.

Trong Android, Intent Filter là một expression trong file manifest của ứng dụng, được sử dụng để chỉ định loại intent mà component muốn nhận. Nếu ta tạo Intent filter cho activity, các ứng dụng khác có thể bắt đầu activity bằng cách gửi intent phù hợp, nếu không thì activity chỉ có thể được bắt đầu bằng một explicit intent.

Sau đây là đoạn code minh họa về implicit intent.

Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.freetuts.net"));
startActivity(intent);

Theo như trên minh họa, chúng ta không xác định tên component cụ thể, thay vào đó chúng ta đã xác định một action ( ACTION_VIEW ) để mở URL được xác định (freetuts.net) trong ứng dụng trình duyệt của thiết bị.

2. Ví dụ về Implicit Intent trong Android

Sau đây chúng ta sẽ đi vào ví dụ về một Implicit Intent trong ứng dụng Android để các bạn hiểu rõ hơn về loại Intent này.

Bắt đầu bằng việc tạo một ứng dụng Android mới và mở file activity_main.xml từ đường dẫn \ src \ main \ res \ layout rồi nhập code sau:

Activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.tutlane.intents.MainActivity">
    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/urlText"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="100dp"
        android:ems="10" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btnNavigate"
        android:layout_below="@+id/urlText"
        android:text="Navigate"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

Tiếp theo, mở file MainActivity.java từ đường dẫn \ src \ main \ java \ com \ tutlane \ com.tutlane.helloworld và viết code sau.

Code này sẽ mở url trong cửa sổ trình duyệt mới bằng cách click vào button.

MainActivity.java

package com.tutlane.intents;

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText editText = (EditText)findViewById(R.id.urlText);
        Button btn = (Button) findViewById(R.id.btnNavigate);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String url = editText.getText().toString();
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(intent);
            }
        });
    }
}

Khi chạy ví dụ trên bằng thiết bị ảo Android (AVD),ta nhận được kết quả như hiển thị bên dưới

android implicit intents example result png

Khi nhập url trang web và nhấp vào button, ứng dụng sẽ mở trang web trong cửa sổ mới của ứng dụng trình duyệt. Như trong hình là bạn đã nhập domain tutlane.com.

Cùng chuyên mục:

Cách ẩn thanh tiêu đề và hiển thị toàn màn hình trong Android

Cách ẩn thanh tiêu đề và hiển thị toàn màn hình trong Android

Cách dùng file File R.java trong Android

Cách dùng file File R.java trong Android

File AndroidManifest.xml trong Android

File AndroidManifest.xml trong Android

Giới thiệu Dalvik Virtual Machine trong Android  (DVM)

Giới thiệu Dalvik Virtual Machine trong Android (DVM)

FrameLayout trong Android

FrameLayout trong Android

Trong các UI Layout, FrameLayout là loại Layout đơn giản nhất, xem ngay tại đây

TableLayout trong Android

TableLayout trong Android

Trong bài này chúng ta sẽ tìm hiểu TalbeLayout trong Android

Relative Layout trong Android

Relative Layout trong Android

Trong bài này chúng ta sẽ tìm hiểu RelativeLayout trong Android

LinearLayout trong Android

LinearLayout trong Android

Ở bài trước chúng ta đã tìm hiểu sơ qua về các loại layout trong…

UI Layout trong Android

UI Layout trong Android

Trong bài này chúng ta sẽ tìm hiểu về UI Layout trong Android

View và ViewGroup trong Android

View và ViewGroup trong Android

Các thành phần cơ bản để xây dựng giao diện người dùng (UI) trong Android…

Intent Filters trong Android

Intent Filters trong Android

Trong bài này chúng ta sẽ tìm hiểu về Intent Filter trong Android

Explicit Intents trong Android

Explicit Intents trong Android

Trong bài này chúng ta sẽ tìm hiểu một loại Intent mới trong Android đó…

Cấu trúc thư mục Project Android

Cấu trúc thư mục Project Android

Trong bài này chúng ta sẽ tìm hiểu cấu trúc thư mục của một project…

Giới thiệu Intent trong Android

Giới thiệu Intent trong Android

Trong Android, Intent là những tin nhắn không đồng bộ cho phép các component

Fragment trong Android

Fragment trong Android

Trong bài này chúng ta sẽ tìm hiểu một khái niệm mới trong lập trình…

Services trong Android

Services trong Android

Trong bài này chúng ta sẽ tìm hiểu Services trong Android.

Broadcast Receiver trong Android

Broadcast Receiver trong Android

Bài này sẽ tìm hiểu Broadcast Receiver trong Android.

Content Providers trong Android

Content Providers trong Android

Bài này chúng ta sẽ tìm hiểu về content provider trong Android, nó đóng vai…

Activity trong Android

Activity trong Android

Trong Android, Activity biểu thị một màn hình đơn với giao diện người dùng (UI)…

Component trong một ứng dụng Android

Component trong một ứng dụng Android

Top