最近由于项目需求,需要获取手机WiFi的MAC地址和IP,于是乎网上搜罗了一波。各种版本的都有,各种方法都有,而且安卓6.0以下、6.0~7.0、7.0以上版本差异都很大!在这里我就集中给归一下类,方便以后查阅。

1. 归类

  1. 6.0之前通过WifiManager修改xml权限获取。
  2. 6.0~7.0读取系统文件或shell命令获取。
  3. 7.0以后通过网络接口驱动wlan0获取。

2. 推荐使用代码

安卓是基于linux的,最后推荐使用最后一种方式获取WiFi的MAC地址和IP:

// 获取ip地址
public 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;}
// 获取MAC地址
public static String getMacAddr() {try {List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());for (NetworkInterface nif : all) {if (!nif.getName().equalsIgnoreCase("wlan0")) continue;byte[] macBytes = nif.getHardwareAddress();//nif.getInetAddresses();if (macBytes == null) {return "";}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) {}return "02:00:00:00:00:00";}

3. 部分参考代码

通过shell命令获取MAC地址:

*** 这是使用adb shell命令来获取mac地址的方式* @return*/public static String getMac() {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;}

通过读取/sys/class/net/wlan0/address文件获取

/*** Android 6.0(包括) - Android 7.0(不包括)* @return*/
private static String getMacAddress() {String WifiAddress = "02:00:00:00:00:00";try {WifiAddress = new BufferedReader(new FileReader(new File("/sys/class/net/wlan0/address"))).readLine();} catch (IOException e) {e.printStackTrace();}return WifiAddress;
}

通过IP地址获取MAC地址,其实还是通过网络接口驱动获取的。

/*** 根据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;}

一堆参考:

1、Android获取Mac地址-适配所有版本
2、Android 6.0 和 7.0后获取Mac地址
3、Android 6.0获取MAC地址
4、Android获取Mac地址-兼容6.0及以上系统
5、Android 手机获取Mac地址的几种方法
6、Android 获得设备状态信息、Mac地址、IP地址
7、android 获取设备信息的IP地址和Mac地址—亲测无误!!
8、android获取Mac地址和IP地址

Android~获取WiFi MAC地址和IP方法汇总相关推荐

  1. android获取wifi mac地址吗,Android 获取WIFI MAC地址的方法

    1. 经常用法,调用Android的API:WifiManager WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SER ...

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

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

  3. android+手机mac地址,Android 获取手机Mac地址,手机名称

    /** * 获取手机mac地址 * 错误返回12个0 */ public static String getMacAddress(Context context) { // 获取mac地址: Stri ...

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

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

  5. js 获取计算机mac地址,JS获取计算机mac地址以及IP的实现方法

    JS获取计算机mac地址以及IP的实现方法 复制代码 代码如下: //这两个是系统里的ActiveX插件   用来获取ip以及物理地址 if(objObject.IPEnabled   !=   nu ...

  6. 如何正确获取 wifi mac地址

    获取wifi mac地址 今日研读讯飞 AIUI SDK 对其工具类的实现 进行一下简单记录 正式版本中使用的功能 值得我们借鉴 getWifiMac 为每一个设备设置对应唯一的SN(最好使用设备硬件 ...

  7. java如何获得wlan mac_Android M 如何获取 Wifi MAC地址

    今天在撸代码时发现,之前能获取mac地址的方法在nexus 6上返回了"02:00:00:00:00:00",进入设置查看mac地址,结果不相同,肯定有问题,于是就开始上网查资料一 ...

  8. arp 已知mac找ip_怎么通过mac地址查ip 通过mac地址查ip方法【图文】

    随着网络的普及率越来越高,科技越来发达,使用电脑的过程中遇到的问题越来越多.其中一个问题就是知道mac地址,却不知道IP地址.为什么呢?在网络的世界里IP地址是虚拟的;mac地址是网卡地址,只有一种, ...

  9. Android 8.1 获取wifi mac地址方法

    安卓8.1更新了获取WIFI地址的方法,使用之前的方法获取不到地址 private String getWifiMacAddress() {String str = "";Stri ...

最新文章

  1. OWASP Webgoat 安装和使用
  2. java中打开指定的文件夹
  3. iOS使用 xcconfig配置文件的若干坑
  4. 从0搭建一个Springboot+vue前后端分离项目(二)使用idea进行页面搭建+页面搭建
  5. 创新设计模式:抽象工厂模式
  6. ASP.NET Web 服务、企业服务和 .NET Remoting 的性能
  7. python -m pip install [package] --no-deps
  8. vbs运算符号和函数
  9. java controller json_Controller 获取 JSON
  10. 设计灵感|独具中国韵味的海报设计
  11. ThinkPHP中create()方法自动验证表单信息
  12. Win软件 - Listary
  13. sql的casewhen
  14. 杭州-千岛湖(入门篇骑行)
  15. java 调用图灵接口_图灵机器人(问答机器人)API调用示例
  16. android root 的作用,安卓手机Root好不好?手机Root后有什么好处和影响?
  17. 文档透明加密底层安全机制
  18. Mybatis-plus 分页功能报错:除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效
  19. Win8 纯净版安装详细教程
  20. 【ZCMU1931】wjw的剪纸(dfs)

热门文章

  1. android微信图片选择框架,Android仿微信图片选择器ImageSelector使用详解
  2. Unity3D学习笔记(一):Unity简介、游戏物体、组件和生命周期函数
  3. 玩转Python之Turtle画五角星
  4. 计算机编程里面counter是什么意思,step在计算机编程中的意思是什么
  5. HDU 5804/BC 86A Price List
  6. 13 信息2班 《安卓程序设计基础》课程成绩
  7. Things3 3.13.13 一款优秀的GTD任务管理工具
  8. ArcGIS 矢量数据拓扑编辑
  9. 收到面试通知后,如何准备可以大大提升面试成功率?
  10. 2021江苏大学生编程大赛I题(省赛试水)