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

Cách lấy địa chỉ MAC Wi-Fi trên Android

Giới thiệu

Lấy địa chỉ MAC của interface Wi-Fi hiện tại qua WifiManager và WifiInfo.

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

Bước 1: Project

Bước 2: Giao diện

<TextView
    android:id="@+id/text"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:textSize="24sp" />

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

package com.example.myapplication;

import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private TextView textView;

    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = findViewById(R.id.text);

        WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
        WifiInfo wifiInfo = wifiManager.getConnectionInfo();

        if (wifiInfo != null) {
            String mac = wifiInfo.getMacAddress();
            textView.setText("MAC Wi-Fi: " + (mac != null ? mac : "Không xác định"));
        } else {
            textView.setText("Chưa kết nối Wi-Fi");
        }
    }
}

Bước 4: Quyền (AndroidManifest.xml)

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

⚠️ Quan trọng: Thay đổi từ Android 6.0+

  • Android 6.0 - 9.0: Cần quyền ACCESS_FINE_LOCATION hoặc ACCESS_COARSE_LOCATION và bật GPS.
  • Android 10 (API 29)+: getMacAddress() luôn trả về 02:00:00:00:00:00 (giá trị giả) cho app không phải system. Địa chỉ MAC thật bị ẩn để bảo vệ riêng tư.
  • Giải pháp thay thế: Dùng Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID) hoặc Instance ID để nhận diện thiết bị.