Android Studio获取手机MAC地址的5种方法(Java/Android标准库)
Android Studio获取手机MAC地址的5种方法(Java/Android标准库)
本文介绍了5种在Android Studio中使用Java或Android标准库获取手机MAC地址的方法,并提供了详细的代码示例。这些方法适用于Android开发中需要识别设备唯一标识的需求,并在JDK 11版本下有效。
限制条件:
- 使用Java或Android标准库
- JDK 11版本
方法:
- 使用WifiManager获取mac地址
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
String macAddress = wifiManager.getConnectionInfo().getMacAddress();
- 使用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;
- 使用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;
- 使用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();
}
- 使用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 地址可能被修改或伪造。
原文地址: https://www.cveoy.top/t/topic/mRly 著作权归作者所有。请勿转载和采集!