您的位置:首页 > 移动开发 > Android开发

Android6.0以上系统获取WiFi Mac地址(适用于4.x及5.x)

2017-06-10 20:04 465 查看
添加权限<uses-permission android:name="android.permission.INTERNET" />

/**
* 方法一
* 获取设备Mac地址
* @return
*/
public static String getMacAddress() {
String macAddress = "";
try {
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface networkInterface = interfaces.nextElement();
byte[] bytes = networkInterface.getHardwareAddress();
if (bytes == null || bytes.length == 0) {
continue;
}
StringBuffer buffer = new StringBuffer();
for (byte b : bytes) {
buffer.append(String.format("%02X:", b));
}
if (buffer.length() > 0) {
buffer.deleteCharAt(buffer.length() - 1);
}
macAddress = buffer.toString();
Log.d("mac", "interface name=" + networkInterface.getName() + ", mac address=" + macAddress);
}
} catch (SocketException e) {
e.printStackTrace();
}
return macAddress;
}

/**
* 方法二
* 获取设备Mac地址
* @return
*/
public static String getMacAddress2() {
String macAddress = "";
try {
List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface networkInterface : interfaces) {
Log.e("DoorCard", "Mac Address Name: " + networkInterface.getName());
if (!networkInterface.getName().equalsIgnoreCase("wlan0")) {
continue;
}
byte[] bytes = networkInterface.getHardwareAddress();
if (bytes == null) {
return "";
}
StringBuffer buf = new StringBuffer();
for (byte b : bytes) {
Log.e("DoorCard", "b=" + b);
buf.append(String.format("%02X:", b));
}
if (buf.length() > 0) {
buf.deleteCharAt(buf.length() - 1);
}
macAddress = buf.toString();
return macAddress;
}
} catch (SocketException e) {
e.printStackTrace();
}
return macAddress;
}

/**
* 方法三
* 获取设备Mac地址
* @return
*/
public static String getMacAddress3() {
String macAddress = "";
String str = "";
try {
Process process = Runtime.getRuntime().exec("cat /sys/class/net/wlan0/address");
InputStreamReader reader = new InputStreamReader(process.getInputStream());
LineNumberReader numberReader = new LineNumberReader(reader);
for (; null != str;) {
str = numberReader.readLine();
if (str != null) {
macAddress = str.trim();
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}

if (macAddress == null || macAddress.equals("")) {
try {
return loadFileAsString("/sys/class/net/eth0/address").toUpperCase().substring(0,17);
} catch (Exception e) {
e.printStackTrace();
}
}
return macAddress;
}

public static String loadFileAsString(String fileName) throws Exception {
FileReader reader = new FileReader(fileName);
String text = loadReaderAsString(reader);
reader.close();
return text;
}

public static String loadReaderAsString(Reader reader) throws Exception {
StringBuffer buf = new StringBuffer();
char[] buffer = new char[4096];
int readLength = reader.read(buffer);
while (readLength >= 0) {
buf.append(buffer, 0, readLength);
readLength = reader.read(buffer);
}
return buf.toString();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android wifi 6.0