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

Android获取Ethernet、WIFI的ip和mac地址

2014-11-05 18:46 525 查看

通过IP获取MAC地址
	/**
* 通过本地ip获取mac地址
* @return
*/
@SuppressWarnings("finally")
private String getLocalMacAddressFromIp() {
String mac_s = "";
try {
byte[] mac;
String ip = getLocalIpAddress();
if (!InetAddressUtils.isIPv4Address(ip)) {
return mac_s;
}
InetAddress ipAddress = InetAddress.getByName(ip);
if (ipAddress == null) {
return mac_s;
}
NetworkInterface ne = NetworkInterface.getByInetAddress(ipAddress);
mac = ne.getHardwareAddress();
if (mac.length > 0) {
mac_s = byte2mac(mac);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
return mac_s;
}
}

private String byte2mac(byte[] b) {
StringBuffer hs = new StringBuffer(b.length);
String stmp = "";
int len = b.length;
for (int n = 0; n < len; n++) {
stmp = Integer.toHexString(b
& 0xFF);
if (stmp.length() == 1) {
hs = hs.append("0").append(stmp);
} else {
hs = hs.append(stmp);
}
}
StringBuffer str = new StringBuffer(hs);
for (int i = 0; i < str.length(); i++) {
if (i % 3 == 0) {
str.insert(i, ':');
}
}
return str.toString().substring(1);
}
因为是通过ip获取的mac地址,所以当是wifi连接时的ip获取到的则是WIFI的mac,如果是Ethernet连接时则获取的是Ethernet的mac地址

下面的方法则是直接获取Ethernet的mac

/**
* 获取Ethernet的MAC地址
* @return
*/
private String getMacAddress() {
try {
return loadFileAsString("/sys/class/net/eth0/address").toUpperCase(Locale.ENGLISH).substring(0, 17);
} catch (IOException e) {
return null;
}
}

private 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();
}
还有一种更简单的方式获取Ethernet的mac
/**
* 获取Ethernet的MAC地址
* @return
*/
private String getMacAddress() {

EthernetManager ethManager = (EthernetManager) MainActivity.this.getSystemService("ethernet");
return ethManager.getMacAddr()==null?"":ethManager.getMacAddr();
}


获取wifi的mac地址
/**
* 获取wifi mac
* @return
*/
private String getWifiMac(){

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
return info.getMacAddress()==null?"":info.getMacAddress();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: