1. 经常用法,调用Android的API:WifiManager

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

WifiInfo info = wifi.getConnectionInfo();

return info.getMacAddress();

此方法须要保证WIFI在本次开机以来以前是打开过的,否则会返回null。所以须要后台尝试先打开WIFI再获取。

演示样例代码:

//尝试打开wifi

private static boolean tryOpenMAC(WifiManager manager)

{

boolean softOpenWifi = false;

int state = manager.getWifiState();

if (state != WifiManager.WIFI_STATE_ENABLED && state != WifiManager.WIFI_STATE_ENABLING)

{

manager.setWifiEnabled(true);

softOpenWifi = true;

}

return softOpenWifi;

}

//尝试关闭MAC

private static void tryCloseMAC(WifiManager manager)

{

manager.setWifiEnabled(false);

}

//尝试获取MAC地址

private static String tryGetMAC(WifiManager manager)

{

WifiInfo wifiInfo = manager.getConnectionInfo();

if (wifiInfo == null || StringUtil.isNull(wifiInfo.getMacAddress()))

{

return null;

}

String mac = wifiInfo.getMacAddress().replaceAll(":", "").trim().toUpperCase();

mac = formatIdentify(mac);

return mac;

}

//尝试读取MAC地址

private static String getMacFromDevice(int internal)

{

String mac=null;

WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);

mac = tryGetMAC(wifiManager);

if(!StringUtil.isNull(mac))

{

return mac;

}

//获取失败,尝试打开wifi获取

boolean isOkWifi = tryOpenMAC(wifiManager);

for(int index=0;index

{

//假设第一次没有成功,第二次做100毫秒的延迟。

if(index!=0)

{

try

{

Thread.sleep(100);

}

catch (InterruptedException e)

{

e.printStackTrace();

}

}

mac = tryGetMAC(wifiManager);

if(!StringUtil.isNull(mac))

{

break;

}

}

//尝试关闭wifi

if(isOkWifi)

{

tryCloseMAC(wifiManager);

}

return mac;

}

==================================================================

2. 查询文件路径 /sys/class/net/wlan0/address

adb shell cat /sys/class/net/wlan0/address

98:6c:f5:10:96:c4

可是假设WIFI在本次开机期间从来没有打开过,返回的MAC地址是不同的(非实际的),例如以下:

cat /sys/class/net/wlan0/address

00:90:4c:11:22:33

演示样例代码:

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 e) {

e.printStackTrace();

}

return macSerial;

}

==================================================================

3. 查询记录了MAC地址的文件“/proc/net/arp”,可是从測试结果看,返回的数据并非想要的Wifi Mac地址:

比方,手机实际的WIFI Mac地址是98:6c:f5:10:96:c4,但使用adb shell cat proc/net/arp返回的是:

cat proc/net/arp

IP address       HW type     Flags       HW address            Mask     Device

192.168.0.3      0x1         0x2         00:23:89:b9:1a:fd     *        wlan0

192.168.0.1      0x1         0x2         08:00:27:7c:65:5a     *        wlan0

android获取wifi mac地址吗,Android 获取WIFI MAC地址的方法相关推荐

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

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

  2. android动态mac地址,Android 版本兼容 — Android 6.0 和 7.0后获取Mac地址

    Android 6.0 和 7.0后获取Mac地址 随着Android的版本迭代,获取设备的Mac地址也发生了改变.这里找到了最新的适配方案(适配当前的最新版本Android 9.0),并且记录了整个 ...

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

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

  4. Android的mac和BSSID,Android 获取本机的mac和wifi的BSSID(mac)以及其他信息

    一上班就开始总结上礼拜写的wifi,先来说说wifi的属性 在Android的官方文档中定义了如下五种状态: WIFI_STATE_DISABLED   WIFI 不可用 WIFI_STATE_DIS ...

  5. android 获取wifi的ip地址吗,Android获取有线和无线(wifi)的IP地址

    /*** 获取IP * *@paramcontext *@return */ public staticString getIP(Context context) { String ip= " ...

  6. android 获取wifi的ip地址吗,Android开发实现在Wifi下获取本地IP地址的方法

    本文实例讲述了Android开发实现在Wifi下获取本地IP地址的方法.分享给大家供大家参考,具体如下: 代码核心介绍: WifiManager类提供了对设备Wifi功能的管理,包括Wifi开关的打开 ...

  7. android socket gprs 与 wifi 网络切换,Android应用开发Android 获取手机Wifi地址和Gprs地址,反射修改Wifi地址...

    Android 获取手机Wifi地址和Gprs地址,反射修改Wifi地址. //查看Wifi地址publicString   getWifiIpAddress() { //获取wifi服务WifiMa ...

  8. android蓝牙获取mac地址,如何获得蓝牙连接设备的MAC地址在android中

    我在android中通过蓝牙发送图像,并且想要获取图像发送到的设备的MAC地址.如何获得蓝牙连接设备的MAC地址在android中 请在下面找到我的代码. private void bluetooth ...

  9. android dhcp 服务器,安卓通过DHCP协议获取IP地址的过程

    安卓通过DHCP协议的DORA Discovery发现 Offer提供 Request请求 Ack确认 获取IP地址的过程 安卓N之前 5.0 6.0通过 android_net_utils_runD ...

最新文章

  1. camera raw 滤镜预设_Camera Raw中利用预设实现批量化调色,PS这款滤镜真的很好用...
  2. Confluence 6 配置管理员会话安全的备注
  3. 操作系统原理:读写者经典同步问题
  4. 弄懂goroutine调度原理
  5. NavisWorks Api 简单使用与Gantt
  6. 深度LINUX不喜欢
  7. PHP用户名和密码登陆验证代码
  8. 分布式服务架构原理、设计
  9. 获取微信视频号视频地址
  10. 《红楼梦》诗词鉴赏(精选)
  11. 浅谈Docker的安全性支持(上篇)
  12. ChatGPT账号没封的看过来,与ChatGPT玩个超级创意游戏
  13. 5款国产ARM芯片(对标stm32f103c8t6)测试评估
  14. 【重磅】2020年SCI影响因子正式公布!各领域TOP期刊!(附下载链接)
  15. F - Queen Collision (模拟题,找规律)
  16. 什么是支撑位和阻力位
  17. 建筑平面图, 建筑设计图, 家具摆放图, 制作, 开发, 软件, VC++, 源代码组件库
  18. zblog网址导航 网站目模板
  19. Machine Learning学习(一)Overview of machine learning机器学习概述
  20. 175度高温加速度计简介

热门文章

  1. 架构详解——淘系圈品进化史
  2. kali安装搜狗输入法
  3. 全球最有诚意的4款免费室内设计软件!
  4. 近代数学史上的最大冤案
  5. 2021-2027全球与中国牲畜耳标签市场现状及未来发展趋势
  6. 小学生C++学习视频集
  7. 除尘液压站比例控制阀放大器
  8. 停止或暂停程序的信号: intr、quit、stop
  9. .pypirc+sdist upload命令无法有效上传(错误403),改用twine发布
  10. 一个创业的故事——Philippe Kahn 和Anders Hejlsberg