获取手机设备的mac地址
来源:互联网 发布:手机图片生成器软件 编辑:程序博客网 时间:2024/05/19 13:17
获取手机设备的mac地址
由于项目中需要获取手机mac地址作为标识此手机的唯一标识,于是就在网上搜如何获取mac地址的资料,目前看到最多的就是
public String getLocalMacAddress() { WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo(); return info.getMacAddress(); }
根据wifi信息来获取的,但是此方法是在wifi连接的时候才能获取,断开wifi就不能了,不符合要求,继续找,后来发现一个
public static String getLocalIpAddress() { try { String ipv4; ArrayList<NetworkInterface> nilist = Collections.list(NetworkInterface.getNetworkInterfaces()); for (NetworkInterface ni: nilist) { ArrayList<InetAddress> ialist = Collections.list(ni.getInetAddresses()); for (InetAddress address: ialist) { if (!address.isLoopbackAddress() &&InetAddressUtils.isIPv4Address(ipv4=address.getHostAddress())) { return ipv4; } } } } catch (SocketException ex) { } return null; } public static String getLocalMacAddressFromIp(Context context) { String mac_s= ""; try { byte[] mac; NetworkInterface ne = NetworkInterface.getByInetAddress(InetAddress.getByName(getLocalIpAddress())); mac = ne.getHardwareAddress(); System.out.println("mac======="+mac); mac_s = byte2hex(mac); } catch (Exception e) { e.printStackTrace(); } return mac_s; } public static 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[n] & 0xFF); if(stmp.length() == 1){ hs = hs.append("0").append(stmp); }else { hs = hs.append(stmp); } } return String.valueOf(hs); }根据ip地址来获取的,还是不行,因为ip地址是一定要在有网的情况下才有的,否则是0。
最后发现一个,此方法在断网的情况下能获取到,OK,解决
public String getMacAddress(){ String macSerial = null; String str = ""; try { Process pp = Runtime.getRuntime().exec( "cat /sys/class/net/wlan0/address "); InputStreamReader ir = new InputStreamReader(pp.getInputStream()); LineNumberReader input = new LineNumberReader(ir); for (; null != str;) { str = input.readLine(); if (str != null) { macSerial = str.trim();// 去空格 break; } } } catch (IOException ex) { // 赋予默认值 ex.printStackTrace(); } return macSerial; }
不好意思,上面的方法有时候也获取不到,所以如果要取设备的一个参数当做唯一标识,还是取DEVICE_ID,比较靠谱。
/** * 获取设备唯一标识DEVICE_ID * @return */ public String getDeviceID() { TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String DEVICE_ID = tm.getDeviceId(); return DEVICE_ID; }
0 0
- 获取手机设备的mac地址
- 获取设备mac地址
- 获取手机mac地址
- 获取手机MAC地址
- 获取手机Mac地址
- 获取手机(ios,android)的设备唯一码(mac地址, IMEI)
- 获取的android手机的MAC地址
- 获取android设备的mac地址
- 获取 android 设备 mac 地址的方法
- WiFi设备MAC地址的获取-----安卓端
- WiFi设备MAC地址的获取-----服务器端
- 获取android设备的MAC地址
- iOS开发:获取设备的MAC地址
- iOS获取手机的Mac地址
- 怎样获取苹果手机的mac 地址
- 获取蓝牙设备的MAC地址和设备名
- 获取andorid设备的IP地址和MAC地址
- iOS 获取手机的物理(Mac地址)地址
- IOS调取系统摄像头以及相册
- Hadoop2.2集群安装配置-Spark集群安装部署
- iOS 实现九宫格效果
- 程序员的工具
- propertyplaceholderconfigurer
- 获取手机设备的mac地址
- Linux 流操作函数
- MFC动态创建按钮及添加消息响应
- 太阳王路易十四一生洗澡不超过七次的原因
- 项目中用到marquee的js效果总结
- leetcode Reverse Integer(python)
- fatal error: file '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Dev
- Python核心编程 练习 第六章
- 树的定义及其分类