Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách validate (kiểm tra) địa chỉ email trong Android

Giới thiệu

Bài viết này hướng dẫn cách kiểm tra định dạng địa chỉ email hợp lệ trong Android sử dụng Regular Expression (Regex) và class android.util.Patterns có sẵn.

Các bước thực hiện

Bước 1: Tạo dự án mới

Tạo project Android Studio mới.

Bước 2: Layout (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="8dp"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/etEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:hint="Nhập địa chỉ email"
        android:inputType="textEmailAddress" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/etEmail"
        android:layout_alignParentEnd="true"
        android:layout_marginTop="5dp"
        android:onClick="validateEmail"
        android:text="Validate" />

</RelativeLayout>

Bước 3: Code Java (src/MainActivity.java)

package app.com.sample;

import android.os.Bundle;
import android.util.Patterns;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    EditText etEmail;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        etEmail = findViewById(R.id.etEmail);
    }

    public void validateEmail(View view) {
        String email = etEmail.getText().toString().trim();

        // Cách 1: Sử dụng Patterns.EMAIL_ADDRESS (API 1+) - KHUYẾN NGHỊ
        boolean isValid = Patterns.EMAIL_ADDRESS.matcher(email).matches();

        // Cách 2: Regex tùy chỉnh (nếu cần kiểm soát chặt chẽ hơn)
        // String emailRegex = "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$";
        // boolean isValid = email.matches(emailRegex);

        if (isValid) {
            Toast.makeText(this, "✓ Email hợp lệ: " + email, Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "✗ Email không hợp lệ: " + email, Toast.LENGTH_SHORT).show();
        }
    }
}

So sánh 2 cách:

Tiêu chíPatterns.EMAIL_ADDRESSCustom Regex
Độ tin cậyCao (chuẩn RFC 5322)Tùy vào regex viết
Hiệu năngTối ưu sẵnCần compile pattern
Tùy biếnKhông thểLinh hoạt hoàn toàn
Khuyến nghịNên dùngChỉ khi có yêu cầu đặc biệt

Bước 4: Manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

Chạy ứng dụng

Nhập email vào EditText, nhấn Validate. Kết quả hiển thị qua Toast.

Cách validate (kiểm tra) địa chỉ email trong Android

Mở rộng: Validate real-time khi gõ (TextWatcher)

etEmail.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        boolean valid = Patterns.EMAIL_ADDRESS.matcher(s).matches();
        etEmail.setError(valid ? null : "Email không hợp lệ");
        // Hoặc đổi màu background, icon...
    }

    @Override
    public void afterTextChanged(Editable s) {}
});

Kotlin Extension

fun String.isValidEmail(): Boolean {
    return Patterns.EMAIL_ADDRESS.matcher(this).matches()
}

// Sử dụng:
if (emailInput.isValidEmail()) { ... }

Lưu ý

  • Regex chỉ kiểm tra cú pháp, không kiểm tra email có thực sự tồn tại
  • Để verify email thật, cần gửi OTP/link xác thực
  • inputType="textEmailAddress" chỉ hiển thị keyboard phù hợp, không validate