Ví dụ về Android Intent không tường minh, mở một URL, gửi một email

Xem thêm các chuyên mục:

1- Android Intent

2- Ví dụ đơn giản với Intent không tường minh

Ví dụ đơn giản dưới đây, khi bạn click vào một Button yêu cầu xem một trang web cho bởi một URL, bạn tạo một ý định (Intent) không tường minh, Intent được gửi cho hệ thống Android quyết định sẽ mở thành phần gì, có thể trong thiết bị của bạn cài nhiều trình duyệt khác nhau ( Firefox, Chrome,..), thiết bị sẽ mở nó bằng trình duyệt mặc định hoặc trình duyệt mà bạn ưu thích.
Ngoài ra ví dụ cũng bao gồm:
  • Gửi email
Chú ý: Hệ thống Android sẽ cố gắng tìm kiếm một ứng dụng tốt nhất của nó để gửi email. Trên thiết bị giả lập (emulator) có thể không có một ứng dụng gửi email đủ tốt.
Tạo mới Android project có tên "ImplicitIntentExample".
  • Name: ImplicitIntentExample
  • Package name: org.o7planning.implicitintentexample
Giao diện của ứng dụng:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button_openURL"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="38dp"
        android:text="Open Google.com"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button_sendEmail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="42dp"
        android:text="Send Email"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button_openURL" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package org.o7planning.implicitintentexample;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.content.Intent;
import android.net.Uri;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    private Button buttonOpenURL;
    private Button buttonSendEmail;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.buttonOpenURL = (Button) this.findViewById(R.id.button_openURL);
        this.buttonSendEmail = (Button) this.findViewById(R.id.button_sendEmail);

        this.buttonOpenURL.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openURL();
            }
        });

        this.buttonSendEmail.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendEmail();
            }
        });
    }

    // The method is called when the user clicks on "Open google.com" button.
    public void openURL( )  {
        String url="https://google.com";

        // An implicit intent, request a URL.
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        this.startActivity(intent);
    }

    // The method is called when the user clicks on "Send Email" button.
    public void sendEmail( )  {

        // List of recipients
        String[] recipients=new String[]{"friendemail@gmail.com"};

        String subject="Hi, how are you!";

        String content ="This is my test email";

        Intent intentEmail = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:"));
        intentEmail.putExtra(Intent.EXTRA_EMAIL, recipients);
        intentEmail.putExtra(Intent.EXTRA_SUBJECT, subject);
        intentEmail.putExtra(Intent.EXTRA_TEXT, content);

        intentEmail.setType("text/plain");

        startActivity(Intent.createChooser(intentEmail, "Choose an email client from..."));
    }

}

Xem thêm các chuyên mục: