CĂN BẢN
INTENTS
GIAO DIỆN
CÁC KHÁI NIỆM
VÍ DỤ
TÀI LIỆU
HỌC LẬP TRÌNH ANDROID
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:

Tìm hiểu về vòng đời của Activity trong Android

Tìm hiểu về vòng đời của Activity trong Android

AlarmManager trong Android

AlarmManager trong Android

Menu trong Android

Menu trong Android

Fragments trong Android

Fragments trong Android

SearchView trong Android

SearchView trong Android

TabLayout trong Android

TabLayout trong Android

ViewStub trong Android

ViewStub trong Android

Image Slider trong Android

Image Slider trong Android

Trình chuyển đổi hình ảnh (Image Switcher) trong Android

Trình chuyển đổi hình ảnh (Image Switcher) trong Android

ScrollView trong Android

ScrollView trong Android

ProgressBar trong Android

ProgressBar trong Android

Đồng hồ Analog và đồng hồ kỹ thuật số trong Android

Đồng hồ Analog và đồng hồ kỹ thuật số trong Android

Cách dùng TimePicker trong Android

Cách dùng TimePicker trong Android

Cách dùng DatePicker trong Android

Cách dùng DatePicker trong Android

Cách dùng SeekBar trong Android

Cách dùng SeekBar trong Android

Cách dùng WebView trong Android

Cách dùng WebView trong Android

Cách dùng RatingBar trong Android

Cách dùng RatingBar trong Android

Cách dùng ListView trong Android

Cách dùng ListView trong Android

AutoCompleteTextView trong Android

AutoCompleteTextView trong Android

Spinner trong Android

Spinner trong Android

Top