Giới thiệu
BSSID (Basic Service Set Identifier) là địa chỉ MAC của Access Point (router) mà thiết bị đang kết nối. Lấy qua WifiInfo.getBSSID().
Code (MainActivity.java)
public class MainActivity extends AppCompatActivity {
private TextView textView;
@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 bssid = wifiInfo.getBSSID();
textView.setText("BSSID (AP MAC): " + (bssid != null ? bssid : "Không xác định"));
} else {
textView.setText("Chưa kết nối Wi-Fi");
}
}
}
Quyền
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- Từ API 23 cần thêm: -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Lưu ý quan trọng
- Android 6.0 - 9.0: Yêu cầu quyền vị trí (ACCESS_FINE_LOCATION) và GPS bật.
- Android 10 (API 29)+: App thông thường không thể đọc BSSID thật, trả về
02:00:00:00:00:00hoặc null. Chỉ app system hoặc có quyềnACCESS_FINE_LOCATION+ foreground service mới đọc được. - Dùng
WifiManager.getScanResults()để quét danh sách AP gần đó (cần quyền vị trí và Android 9+ cần foreground service).