Android中获取设备IP、MAC地址
2014-02-13 11:34
507 查看
public String getLocalIpAddress() { try { Enumeration en = NetworkInterface.getNetworkInterfaces(); for (; en.hasMoreElements();) { NetworkInterface intf = (NetworkInterface) en.nextElement(); for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { InetAddress inetAddress = (InetAddress) enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress() && !inetAddress.isLinkLocalAddress()) { return inetAddress.getHostAddress().toString(); } } } } catch (SocketException ex) { Log.e("WifiPreference IpAddress", ex.toString()); } return null; } public String getLocalMacAddressFromIp(Context context) { String mac_s = ""; try { byte[] mac; NetworkInterface ne = NetworkInterface.getByInetAddress(InetAddress.getByName(getLocalIpAddress())); mac = ne.getHardwareAddress(); mac_s = byte2hex(mac); } catch (Exception e) { e.printStackTrace(); } return mac_s; } public String byte2hex(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); //注释1 if (stmp.length() == 1) { hs = hs.append("0").append(stmp); } else { hs = hs.append(stmp); } } return String.valueOf(hs); }
注释1:在32位的电脑中数字都是以32格式存放的,如果是一个byte(8位)类型的数字,他的高24位里面都是随机数字,低8位才是实际的数据。java.lang.Integer.toHexString() 方法的参数是int(32位)类型,如果输入一个byte(8位)类型的数字,这个方法会把这个数字的高24为也看作有效位,这就必然导致错误,使用& 0XFF操作,可以把高24位置0以避免这样错误。
相关文章推荐
- android 获取设备的IP和Mac地址
- android 获取设备IP和Mac地址
- android 获取设备IP和Mac地址
- android 设备唯一码的获取,Cpu号,Mac地址
- Android:获取MAC和IP 地址
- android设备获取当前所用网络类型和获取手机ip地址
- 获取android 设备的cpu gpu信息 mac地址
- android 设备唯一码的获取,Cpu号,Mac地址
- android 设备唯一码的获取,Cpu号,Mac地址
- Android获取Ethernet、WIFI的ip和mac地址
- Android获取Ethernet、WIFI的ip和mac地址
- android 获取设备信息的IP地址和Mac地址—亲测无误!!
- android 设备唯一码的获取,Cpu号,Mac地址
- Android获取手机地址(Mac、ip和imei)
- Android 单线程也能极速刷新并获取局域网设备(IP+MAC)信息, 从4分30S 优化到 0.150S 不是梦
- 关于android设备wifi-mac地址的获取
- 获取 android 设备 mac 地址的方法
- android 设备唯一码的获取,Cpu号,Mac地址
- android设备无线、有线网络下获取MAC地址
- 通过IP获取MAC地址