Android Studio获取手机MAC地址的5种方法(Java/Android标准库)

本文介绍了5种在Android Studio中使用Java或Android标准库获取手机MAC地址的方法,并提供了详细的代码示例。这些方法适用于Android开发中需要识别设备唯一标识的需求,并在JDK 11版本下有效。

限制条件:

  • 使用Java或Android标准库
  • JDK 11版本

方法:

  1. 使用WifiManager获取mac地址
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
String macAddress = wifiManager.getConnectionInfo().getMacAddress();
  1. 使用NetworkInterface获取mac地址
try {
    List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
    for (NetworkInterface intf : interfaces) {
        if (!intf.getName().equalsIgnoreCase('wlan0')) {
            continue;
        }
        byte[] mac = intf.getHardwareAddress();
        if (mac == null) {
            return null;
        }
        StringBuilder buf = new StringBuilder();
        for (byte aMac : mac) {
            buf.append(String.format('%02X:', aMac));
        }
        if (buf.length() > 0) {
            buf.deleteCharAt(buf.length() - 1);
        }
        return buf.toString();
    }
} catch (Exception e) {
    e.printStackTrace();
}
return null;
  1. 使用InetAddress获取mac地址
try {
    InetAddress ip = InetAddress.getLocalHost();
    NetworkInterface network = NetworkInterface.getByInetAddress(ip);
    byte[] mac = network.getHardwareAddress();
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < mac.length; i++) {
        sb.append(String.format('%02X%s', mac[i], (i < mac.length - 1) ? ':' : ''));
    }
    return sb.toString();
} catch (Exception e) {
    e.printStackTrace();
}
return null;
  1. 使用TelephonyManager获取mac地址
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imei = telephonyManager.getDeviceId();
String macAddress = null;
try {
    WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
    WifiInfo wInfo = wifiManager.getConnectionInfo();
    macAddress = wInfo.getMacAddress();
} catch (Exception e) {
    e.printStackTrace();
}
  1. 使用Settings.Secure获取mac地址
String macAddress = null;
try {
    macAddress = Settings.Secure.getString(getContentResolver(), 'bluetooth_address');
} catch (Exception e) {
    e.printStackTrace();
}

注意:

  • 从Android 6.0 (API 级别 23) 开始,为了保护用户隐私,使用 WifiManager 获取 MAC 地址可能会返回 02:00:00:00:00:00
  • 在某些设备上,TelephonyManager 可能无法获取到 MAC 地址。
  • 使用 Settings.Secure 获取 MAC 地址可能无法在所有设备上都正常工作。

建议:

  • 如果需要获取设备唯一标识,建议使用 IMEI 或其他更可靠的方法。
  • 避免使用 MAC 地址作为用户标识,因为 MAC 地址可能被修改或伪造。
Android Studio获取手机MAC地址的5种方法(Java/Android标准库)

原文地址: https://www.cveoy.top/t/topic/mRly 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录