希望在Android M上获取Wifi MAC地址的Android开发人员可能遇到了以下问题:获取MAC地址的标准Android OS API返回虚假MAC地址(02:00:00:00:00:00)而不是真实MAC地址值.
获取Wifi MAC地址的常规方法如下:
final WifiManager wifiManager = (WifiManager) getApplication().getApplicationContext().getSystemService(Context.WIFI_SERVICE);
final String wifiMACaddress = wifiManager.getConnectionInfo().getMacAddress();
Run Code Online (Sandbox Code Playgroud)
Inf*_*0re 29
在Android M中,MAC地址对于WiFi和蓝牙来说"不可读".您可以使用(Android M预览2)获取WiFi MACAddress:
public static String getWifiMacAddress() {
try {
String interfaceName = "wlan0";
List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface intf : interfaces) {
if (!intf.getName().equalsIgnoreCase(interfaceName)){
continue;
}
byte[] mac = intf.getHardwareAddress();
if (mac==null){
return "";
}
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 ex) { } // for now eat exceptions
return "";
}
Run Code Online (Sandbox Code Playgroud)
(从这篇文章得到这个代码)
不知怎的,我听说从"/ sys/class/net /"+ networkInterfaceName +"/ address"读取文件; 自Android N发布以来不会有效,三星等不同厂商之间也可能存在差异
希望此代码仍可在以后的Android版本中使用.
编辑:也在Android 6发布这个工作
解决!
仍然可以从路径中获取MAC地址:
"/sys/class/net/" + networkInterfaceName + "/address";
Run Code Online (Sandbox Code Playgroud)
只需执行文件读取或该文件的猫将显示Wifi MAC地址.
网络接口名称通常与"wlan0"或"eth1"一致
| 归档时间: |
|
| 查看次数: |
15459 次 |
| 最近记录: |