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_LOCATIONhoặcACCESS_COARSE_LOCATIONvà 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ị.