获取Android手机MAC的一种实现方案,仅供参考,哈哈哈!是否还有其他更优的解决方法呢?

请注意,高版本在WiFi关闭时,获取不到MAC
`
/**
* 获取手机MAC;
* @param context
* @return
*/

public static String getWlanMac(Context context){String mac = getWlanMacWifiManager(context);if(mac == null){//从本地文件获取mac = getWlanMacLocalAddress();if(mac == null){//从java网络接口获取mac = getWlanMacInterface();if(mac == null){//最后从缓存里读取mac = Pref.getString("wlan_mac_cached", context);}}}if(mac != null){//缓存mac值,防止后续获取失败;一般MAC不会改变Pref.saveString("wlan_mac_cached", mac, context);}return mac;/*** 从WifiManager接口获取手机MAC;* @param context* @return*/
public static String getWlanMacWifiManager(Context context){Log.i("DeviceUtil","get mac by WifiManager...");String mac = null;WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); boolean isWifiEnabled = wifiManager.isWifiEnabled();if(!isWifiEnabled){//6.0以上版本获取需要等待授权,所以下面的读取语句会执行失败wifiManager.setWifiEnabled(true);}if (isWifiEnabled) {WifiInfo wifiInfo = wifiManager.getConnectionInfo(); if (wifiInfo != null) {mac = wifiInfo.getMacAddress();if(CheckUtils.isMacRight(mac)){Log.i("DeviceUtil","mac = " + mac);return mac;}else{mac = null;}}}return mac;
}/*** 从本地文件获取手机MAC;* @param context* @return*/public static String getWlanMacLocalAddress(){Log.i("DeviceUtil","get mac by local address...");String mac = null;String path = "/sys/class/net/wlan0/address";File wlan0 = new File(path);if(wlan0.exists() && wlan0.isFile()){mac = execCmd("cat " + path);if (CheckUtils.isMacRight(mac)) {return mac;}else{mac = null;}}return mac;
}private static String getWlanMacInterface() {Log.i("DeviceUtil","get mac by new interface..." );String mac = null;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 mac;  }  StringBuilder builder = new StringBuilder();  for (byte b : macBytes) {  builder.append(String.format("%02X:",b));  }  if (builder.length() > 0) {  builder.deleteCharAt(builder.length() - 1);  }mac = builder.toString();Log.i("DeviceUtil","mac = " + mac);}  } catch (Exception e) {e.printStackTrace();}return mac;
}

`

获取Android手机MAC的一些方法相关推荐

  1. 几种获取Android手机唯一id的方法

    一般都是用IMEI 获取方法 String imei =((TelephonyManager) context.getSystemService(TELEPHONY_SERVICE)).getDevi ...

  2. 获取Android 手机设备信息:包括机型、操作系统版本号、手机分辨率、运营商、当前联网方式、IMEI、MEID、MAC地址

    获取Android 手机设备信息:操作系统版本号.手机分辨率.运营商.当前联网方式.IMEI.MEID.MAC地址 包括双卡机型上的两个IMEI信息 /*** Created by Administr ...

  3. android开发获取手机,通过ADB获取Android手机信息,获取手机信息

    通过ADB获取Android手机信息,获取手机信息 原文:https://blog.csdn.net/fasfaf454/article/details/51438743 1.获取手机系统信息( CP ...

  4. android每个程序的内存大小,如何获取Android手机全部内存和可用内存尺寸

    通过读取文件"/proc/meminfo"的信息能够获取手机Memory的总量,而通过ActivityManager.getMemoryInfo(ActivityManager.M ...

  5. Unity获取Android手机的RAM和剩余RAM和ROM

    Unity获取Android手机的RAM和剩余RAM和ROM 前言 一.Android工程方法的实现 二.生成aar 三.Untiy中的调用 前言 项目工作需要,在游戏APP运行时,获取当前手机的剩余 ...

  6. android查看轨迹,一种提取并分析Android手机行踪轨迹的方法

    一种提取并分析Android手机行踪轨迹的方法 [技术领域] [0001 ] 本发明涉及信息安全技术领域,特别涉及一种提取并分析Android手机行踪轨迹的方法. [背景技术] [0002]Andro ...

  7. 获取Android手机总内存和可用内存

    在android开发中,有时候我们想获取手机的一些硬件信息,比如android手机的总内存和可用内存大小.这个该如何实现呢? 通过读取文件"/proc/meminfo"的信息能够获 ...

  8. adb 查看屏幕大小_Android应用开发之adb命令如何获取android手机屏幕分辨率

    本文将带你了解Android应用开发之adb命令如何获取android手机屏幕分辨率,希望本文对大家学Android有所帮助 #### 1.   通用方法: adb shell dumpsys win ...

  9. Unity实现在Android端获取Android手机的唯一ID(设备号)(亲测Android11可用)

    Unity实现在Android端获取Android手机的唯一ID(设备号)(亲测Android11可用) 备注:测试版本Unity2020,理论上Unity2018以上都可用,未做测试 - 文章初衷 ...

最新文章

  1. numpy中ravel函数、flatten函数的功能及差异
  2. html div比例,我的前端组件 ---- 16:9固定宽高比例的div
  3. @EnableAutoConfiguration原理简单分析
  4. python k线合成_手把手教你写一个Python版的K线合成函数
  5. Android之网络调试adb tcpip
  6. Linux 命令之 pstree -- 以树状图显示进程/查看进程信息
  7. UGLY NUMBERS II
  8. windows下mysql解压包安装
  9. CString::GetLength()获得字节数的正确方法介绍
  10. Ubuntu中Go的环境搭建
  11. 图片上传预览 (URL.createObjectURL)
  12. 跟公司妹子交流了一下
  13. Python机器人-最简单的机器人答复
  14. html 在线汉字转拼音,在线中文转拼音-汉字注音工具_蛙蛙在线工具
  15. word分栏第一栏没满内容跑到下一栏
  16. HTML小白学习-1.0
  17. Python 写入tsv文件
  18. Android 百度文字识别(详细步骤+源码)
  19. OpenCV-Python 级联分类器训练 | 六十三
  20. IIS7用FastCGI运行PHP配置

热门文章

  1. VB外部调用AutoCAD
  2. CVPR论文解读 | 弱监督的高保真服饰模特生成
  3. python可视化神器_python可视化神器——pyecharts库
  4. vue.js实现原理 -- 订阅者,发布者模式
  5. 100天精通Python(基础篇)——第4天:数据类型
  6. Cocos2d-x 3.x项目实战:星空大战(射击类游戏)-李宁-专题视频课程
  7. 用多协议换采集器制作家用负氧离子除醛设备(带空气检测传感器)
  8. Vue-Router的两种路由模式
  9. Electron前端开发桌面程序--入门篇
  10. Xlinx FFT IP的注意点