由于android6.0对wifi mac地址获取进行了限制,用原来的方法获取会获取到02:00:00:00:00:00这个固定地址。
但是可以通过读取节点进行获取"/sys/class/net/wlan0/address"
在6.0以前的获取WiFi的Mac地址
// Android 6.0之前的版本可以用的方法(模拟器可以使用)
public String getLocalMacAddress()
{
WifiManager wifi = (WifiManager)getApplicationContext().getSystemService(WIFI_SERVICE);
// WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
return info.getMacAddress();
}
Android6.0及其以上使用一下代码
// Android 6.0以上获取WiFi的Mac地址
//由于android6.0对wifi mac地址获取进行了限制,用原来的方法获取会获取到02:00:00:00:00:00这个固定地址。
//但是可以通过读取节点进行获取"/sys/class/net/wlan0/address"
public static String getMacAddr() {
try {
return loadFileAsString("/sys/class/net/wlan0/address")
.toUpperCase().substring(0, 17);
} catch (IOException e) {
e.printStackTrace();
return "";
}
}
private static String loadFileAsString(String filePath)
throws java.io.IOException {
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader = new BufferedReader(new FileReader(filePath));
char[] buf = new char[1024];
int numRead = 0;
while ((numRead = reader.read(buf)) != -1) {
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
}
reader.close();
return fileData.toString();
}
- 下面的代码可以获取当当前设备连接到的网络的wifi信息
- WifiManager mWifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
- if (mWifi.isWifiEnabled()) {
- WifiInfo wifiInfo = mWifi.getConnectionInfo();
- String netName = wifiInfo.getSSID(); //获取被连接网络的名称
- String netMac = wifiInfo.getBSSID(); //获取被连接网络的mac地址
- String localMac = wifiInfo.getMacAddress();// 获得本机的MAC地址
- }
在连接上WiFi情况下,亲测通过,如下图所示:
源码下载地址:点击打开链接