public class MacUtil {/*** 获取mac地址(适配所有Android版本)** @return*/public static String getMac(Context context) {String mac = "";if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {mac = getMacDefault(context);} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {mac = getMacAddress();} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {mac = getMacFromHardware();}return mac;}/*** Android 6.0 之前(不包括6.0)获取mac地址* 必须的权限 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>** @param context * @return*/public static String getMacDefault(Context context) {String mac = "";if (context == null) {return mac;}WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);WifiInfo info = null;try {info = wifi.getConnectionInfo();} catch (Exception e) {e.printStackTrace();}if (info == null) {return null;}mac = info.getMacAddress();if (!TextUtils.isEmpty(mac)) {mac = mac.toUpperCase(Locale.ENGLISH);}return mac;}/*** Android 6.0-Android 7.0 获取mac地址* android 6.0以后 将不再能通过 wifimanager 获取mac,获取到的mac将是固定的:02:00:00:00:00:00 。android sdk后来做了6.0适配,通过cat /sys/class/net/wlan0/address,可以在6.0上获取mac地址*/public static 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);while (null != str) {str = input.readLine();if (str != null) {macSerial = str.trim();//去空格break;}}} catch (IOException ex) {// 赋予默认值ex.printStackTrace();}return macSerial;}/*** Android 7.0之后获取Mac地址* 遍历循环所有的网络接口,找到接口是 wlan0* 必须的权限 <uses-permission android:name="android.permission.INTERNET"></uses-permission>** @return*/public static String getMacFromHardware() {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;//列举Enumeration<NetworkInterface> en_netInterface = null;try {en_netInterface = NetworkInterface.getNetworkInterfaces();} catch (SocketException e) {e.printStackTrace();}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;else ip = null;}if (ip != null) {break;}}return ip;}}

Android工具类——获取wifi模块MAC地址相关推荐

  1. Android工具类获取上下文对象

    在Android开发中,我们经常会遇到在一个类中获取当前的上下文对象,比如:我们要写一个Notification对象做弹出通知,我们应该写在全局里边.方法:自定义MyApplication继承Appl ...

  2. android获取wifi mac地址吗,Android获取当前WiFi的MAC地址-适配所有版本

    ** Android获取当前WiFi的MAC地址 ** package com.dogness.platform.utils; import android.content.Context; impo ...

  3. Android studio 获取设备的Mac地址,wifi和以太网均可使用

    /*** 获取设备的Mac地址* @return Mac地址*/public static String getLocalMacAddress() {String Mac=null;try{Strin ...

  4. android 获取网卡mac_Android获取本机Mac地址及IP地址方法

    1.Android  获取本机Mac 地址方法: 需要在AndroidManifest.xml文件中添加权限: public String getLocalMacAddress() { WifiMan ...

  5. android 获取设备的mac地址,Android编程获取设备MAC地址的实现方法

    本文实例讲述了Android编程获取设备MAC地址的实现方法.分享给大家供大家参考,具体如下: /** * 获取设备的mac地址 * * @param ac * @param callback * 成 ...

  6. Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)

    Android获取设备各项信息(设备id.ip地址.APP应用名称.设备名称.运行商.品牌.型号.分辨率.处理器.国家码.系统语言.网络类型.oaid.android版本.操作系统版本.mac地址.应 ...

  7. Android中获取手机 IMEI Mac地址 IP地址

    一.获取手机IMEI 手机在生产时,每部手机均有一个唯一的标识(ID),国际上采用国际移动设备身份码(IMEI, International Mobile Equipment Identity).IM ...

  8. iOS 获取连接的WiFi和Mac地址

    最近做了一个WiFi的硬件APP,需要用到当前手机链接的WiFi名字和Mac地址,这种场景使用,其实,在打卡软件中,应该比较常用,比如打卡需要连接到公司的WiFi,就是保证你在办公室打的卡. 刚开始使 ...

  9. android 获取mac c语言,获取设备的mac地址和IP地址(android6.0以上专用)

    /** * 获取设备HardwareAddress地址 * @return */ public static String getMachineHardwareAddress(){ Enumerati ...

最新文章

  1. C++ break语句,continue语句,goto语句
  2. 传感器c语言开发,Android环境传感器开发教程
  3. 服务器连接kvm不显示,kvm切换器使用中易出现问题及简单解决方式
  4. 用新语法写更简洁的ABAP代码
  5. 6月第一周国内域名解析商:万网继续抢占DNSPod份额
  6. MYSQL常用函数以及分组操作
  7. 深入解读无服务器架构下的数据库
  8. 计算机组成要素六:编译器 语法分析器
  9. 滴滴新增对手!腾讯投资的网约车平台OnTime或将于本月上线
  10. 关于Vue.js的v-for,key的顺序改变,影响过渡动画表现
  11. java swing企业人事管理系统 java swing mysql实现的企业人事管理系统源码和导入文档(1013)
  12. 17zwd获得17网商品详情接口 API 返回值说明,API接口获取方案
  13. 凯文·凯利:流动、共享、颠覆,未来20年的 12大技术趋势
  14. 花了两天时间用html+css+js做了一个网页版坦克大战游戏
  15. SQL语句增删改查公司-员工3表典型案例
  16. 黄鸟抓包app(httpcanary)
  17. 【HTML+CSS】页内侧边导航栏 页内导航
  18. Java、JSP外卖订餐系统
  19. React : React手脚架的使用
  20. web前端html+css+js 简单模仿敲木鱼

热门文章

  1. 如何使用WRLD建立室内办公室地图
  2. 完全搞定iframe(框架)里的滚动条!(一)
  3. 使用Element-UI中的Table表格组件制作多级表头
  4. DxO PureRAW 3 - RAW 格式照片自动降噪锐化光学校正
  5. java罪恶都市_我的世界罪恶都市整合包
  6. 渗透测试常用工具讲解
  7. UF 判断是不是正圆
  8. 新正圆DTU树根云平台对接说明 Modbus协议 MQTT协议
  9. 华为q1设置虚拟服务器,华为Q1路由器设置上网步骤 手机设置路由器的方法
  10. 天威诚信深契业务需求,推进保险行业安全合规建设