最常用的方法,通过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 en_netInterface = NetworkInterface.getNetworkInterfaces();

while (en_netInterface.hasMoreElements()) {//是否还有元素

NetworkInterface ni = (NetworkInterface) en_netInterface.nextElement();//得到下一个元素

Enumeration 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;

}

}

} catch (SocketException e) {

e.printStackTrace();

}

return ip;

}

这个方法Android 7.0及其以下版本都可以获取到。

根据网络接口获取:

/**

* 通过网络接口取

* @return

*/

private static String getNewMac() {

try {

List 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及其以下版本都可以获取到。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

时间: 2019-02-20

php获取手机的mac地址,Android手机获取Mac地址的几种方法相关推荐

  1. mac连接手机 vm_mac 无法连接android手机进行调试 解决方案

    第一步:查看usb设备信息 在 终端输入:system_profiler SPUSBDataType     可以查看连接的usb设备的信息 比如我的usb信息如下(部分内容): Android: P ...

  2. 如何使用Aimersoft iMusic for Mac从 Android 手机备份歌曲到 PC/Mac?

    如果计算机上没有副本,最好将 Android 手机中的歌曲备份到计算机上,因为我们永远不知道歌曲何时会因恢复出厂设置或病毒攻击而丢失.Aimersoft iMusic for Mac可以通过 2 个简 ...

  3. Mac 和 Android 手机之间互传文件,这四种方法简单高效!

    在Windows上,我们常常需要用USB数据线将安卓手机连接到电脑上,然后在手机和电脑之间传输各种文件.但是这种方法对Mac电脑就不怎么起作用了.由于OS X系统的特殊性,许多用户都不知道如何顺利地将 ...

  4. android手机用户,2011年Android手机用户使用行为研究报告

    一.市场概述及研究背景 谷歌Android,自获得摩托罗拉.三星.HTC.中兴.华为等诸多品牌的拥趸开始,就扮演起了智能手机市场竞争格局颠覆者的角色.经过近三年时间的发展,Gartner最新数据显示, ...

  5. Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法)

    Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法) 目录 Unity Android 之 应用打开手机的指定网 ...

  6. 摩托罗拉手机前途系于Android手机

    商刊:摩托罗拉手机前途系于Android手机 本文发表于 2009-05-06 15:56 | <script src="http://tougao.csdn.net/count.ph ...

  7. 短信备份到另一个手机android,旧手机的短信怎么转移到新手机上?三种方法总有一种适合你...

    手机短信一直以来都是我们和其他对象传输信息的工具,更是存储了大量重要的信息,如果我们更换手机需要保留下来这些短信该怎么办呢?有没有什么方法可以将这些短信转移到新手机中去,或者导出到电脑上进行保管呢. ...

  8. html能连接手机与电视吗,手机如何投屏到液晶电视上?用这4种方法轻松连接,相互告知吧!...

    现在我们使用的手机功能是越来越多,可以说手机的存在代替了很多以前的设备,就比如说电视,以前我们看电视都只能够在电视机上才能看,后来有了电脑之后又开始喜欢在电脑上看,现在有了手机呢,为了方便又喜欢在手机 ...

  9. brook客户端android,Android端线上NativeCrash收集的两种方法(一)

    Android端crash可分为Java层crash和Native crash,我们通常说的crash一般指的是Java层crash,Native crash主要指C/C++代码(其在Android工 ...

  10. Android sim卡清空,Android手机卡了?用这几种方法变回来...

    原标题:Android手机卡了?用这几种方法变回来... 2017年已经过去了三个多月,各大手机厂商也纷纷亮出了自家的新年新品,单看内存,几乎已经全面升级到4GB以上,6GB内存也成为中高端手机的标配 ...

最新文章

  1. Kohana中控制器继承自Controller_Template的问题
  2. 【linux】kill命令模板
  3. 沃尔玛招聘.NET软件工程师
  4. com.android.phone已停止运行怎么解决方法,com.android.phone已停止运行怎么解决
  5. Visio画图--我的形状
  6. 第八届蓝桥杯第十题 k倍区间
  7. Maven-Eclipse使用maven创建HelloWorld Java项目,使用Junit-4.11的注解
  8. 计算机ip保留地址,分类ip地址中,保留地址有哪些?具体点说说,作业。
  9. 正射影像、倾斜摄影测量相关软件汇总
  10. 图的m着色问题回溯法求解
  11. 超好用的网盘下载工具---PanDownload
  12. win10连接共享打印机出现0x0000011b
  13. 软件包没有可安装候选
  14. 【成功解决】运行qt生成的.exe文件报“无法找到入口”的问题
  15. 一文看懂GPIO口的八种工作原理
  16. k8s部署微服务项目
  17. 微信开发 没有认证过的服务号怎么办?微信提供了测试号(开通了认证过的服务号的功能)
  18. 物联网开源平台KAA
  19. Java 中对象数组的简单存入与取出
  20. 三、C++的常用STL

热门文章

  1. 设计网站制作步骤是什么?一个好的网站制作标准是怎样的?
  2. 使用yaml文件指定 kata 安全容器配置相关参数
  3. Cb Vc 经典大讨论(很长的一篇文章!)?
  4. 亚洲大数据峰会(香港站)总结
  5. Citespace(十一)---对图谱中Q值和S值的说明—来自《引文空间分析原理与应用》p24
  6. [Simulink] 从手写代码到自动生成代码
  7. java word水印
  8. 程序员为什么要学习数据库
  9. Linux下更新Chrome和vscode
  10. SequoiaDB巨杉数据库-JDBC驱动