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

android6.0及以上获取wifi mac地址的方法(亲测可行)

2017-10-12 22:46 525 查看
由于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情况下,亲测通过,如下图所示:



源码下载地址:点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: