android 获取mac

android 获取mac地址

/**
 * 通过WiFiManager获取mac地址
 * @param context
 * @return
 */
 private static String tryGetWifiMac(Context context) {
 WifiManager wm = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
 WifiInfo wi = wm.getConnectionInfo();
 if (wi == null || wi.getMacAddress() == null) {
  return null;
 }
 if ("02:00:00:00:00:00".equals(wi.getMacAddress().trim())) {
  return null;
 } else {
  return wi.getMacAddress().trim();
 }
 }

这个方法Android 7.0是获取不到的,返回的是null,其实是返回“02:00:00:00:00:00”


/**
 * 通过网络接口取
 * @return
 */
 private static String getNewMac() {
 try {
  List all = Collections.list(NetworkInterface.getNetworkInterfaces());
  for (NetworkInterface nif : all) {
  if (!nif.getName().equalsIgnoreCase("wlan0")) continue;
  byte[] macBytes = nif.getHardwareAddress();
  if (macBytes == null) {
   return null;
  }
  StringBuilder res1 = new StringBuilder();
  for (byte b : macBytes) {
   res1.append(String.format("%02X:", b));
  }
   if (res1.length() > 0) {
   res1.deleteCharAt(res1.length() - 1);
  }
  return res1.toString();
  }
 } catch (Exception ex) {
  ex.printStackTrace();
 }
 return null;
 }

注意网络接口的Name有跟多:dummy0、p2p0、wlan0....其中wlan0就是我们需要WiFi mac地址。这个方法Android 7.0及其以下版本都可以获取到。

问题1

手机在未连接Wi-Fi的时候,若显示02:00:00:00:00:00是正常现象,手机未开启WLAN时,系统默认返回02:00:00:00:00:00是告知调用WLAN接口的相关应用WLAN未开启,并非设备实际MAC地址。请您连接Wi-Fi后进行查询实际MAC地址。

image.png

你可能感兴趣的:(android 获取mac)