Android 手机获取Mac地址的几种方法
来源:互联网 发布:mac 安装 ipython3 编辑:程序博客网 时间:2024/05/01 06:24
最常用的方法,通过WiFiManager获取:
/** * 通过WiFiManager获取mac地址 * @param context * @return */private static String tryGetWifiMac(Context context) {WifiManager wm = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);WifiInfo wi = wm.getConnectionInfo();if (wi == null || wi.getMacAddress() == null) {return null;}if ("02:00:00:00:00:00".equals(wi.getMacAddress().trim())) {return null;} else {return wi.getMacAddress().trim();}}这个方法Android 7.0是获取不到的,返回的是null,其实是返回“02:00:00:00:00:00”
根据本地IP获取:
/** * 根据IP地址获取MAC地址 * * @return */private static String getLocalMacAddressFromIp() {String strMacAddr = null;try {//获得IpD地址InetAddress ip = getLocalInetAddress();byte[] b = NetworkInterface.getByInetAddress(ip).getHardwareAddress();StringBuffer buffer = new StringBuffer();for (int i = 0; i < b.length; i++) {if (i != 0) {buffer.append(':');}String str = Integer.toHexString(b[i] & 0xFF);buffer.append(str.length() == 1 ? 0 + str : str);}strMacAddr = buffer.toString().toUpperCase();} catch (Exception e) {}return strMacAddr;}/** * 获取移动设备本地IP * * @return */private static InetAddress getLocalInetAddress() {InetAddress ip = null;try {//列举Enumeration<NetworkInterface> en_netInterface = NetworkInterface.getNetworkInterfaces();while (en_netInterface.hasMoreElements()) {//是否还有元素NetworkInterface ni = (NetworkInterface) en_netInterface.nextElement();//得到下一个元素Enumeration<InetAddress> en_ip = ni.getInetAddresses();//得到一个ip地址的列举while (en_ip.hasMoreElements()) {ip = en_ip.nextElement();if (!ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1)break;elseip = null;}if (ip != null) {break;}}} catch (SocketException e) {e.printStackTrace();}return ip;}这个方法Android 7.0及其以下版本都可以获取到。
根据网络接口获取:
/** * 通过网络接口取 * @return */private static String getNewMac() {try {List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());for (NetworkInterface nif : all) {if (!nif.getName().equalsIgnoreCase("wlan0")) continue;byte[] macBytes = nif.getHardwareAddress();if (macBytes == null) {return null;}StringBuilder res1 = new StringBuilder();for (byte b : macBytes) {res1.append(String.format("%02X:", b));}if (res1.length() > 0) {res1.deleteCharAt(res1.length() - 1);}return res1.toString();}} catch (Exception ex) {ex.printStackTrace();}return null;}注意网络接口的Name有跟多:dummy0、p2p0、wlan0....其中wlan0就是我们需要WiFi mac地址。这个方法Android 7.0及其以下版本都可以获取到。
阅读全文
0 0
- Android 手机获取Mac地址的几种方法
- 获取的android手机的MAC地址
- 获取客户端网卡MAC地址的几种方法
- 获取客户端网卡MAC地址的几种方法
- Windows中获取MAC地址的几种方法
- 获取客户端网卡MAC地址的几种方法
- 获取客户端网卡MAC地址的几种方法
- 获取客户端网卡MAC地址的几种方法
- Windows中获取MAC地址的几种方法
- 几种获取mac地址的方法【转】
- Windows中获取MAC地址的几种方法
- 几种在C#中获取MAC地址的方法
- C#获取MAC地址的几种方法
- Android获取手机Mac地址
- Android获取手机MAC地址
- Android手机获取Mac地址
- Android获取手机Mac地址
- 获取android手机mac地址
- 【集合类分析】ConcurrentHashMap
- 山科2017acm校赛--有解嘛?
- Java Spring中同时访问多种不同数据库
- elf增加一个可执行段以注入代码的一些思考
- 任意进制转为十进制
- Android 手机获取Mac地址的几种方法
- 显示器
- hitcon 2016 pwn babyheap writeup
- html float属性随窗口大小改变
- 剑指offer:第17题合并链表
- android7.1 SystemUI 移植要点
- php浮点数计算问题
- C语言snprintf()函数:将格式化的数据写入字符串—sprintf()
- 自定义 jquery.validate.js 校验方法