快下班了,现在总结一下如何使用Java代码获取Android移动终端Mac地址:

通过设备开通WiFi连接获取Mac地址是最可取的,代码如下:

 /*** 设备开通WiFi连接,通过wifiManager获取Mac地址* * @author 高焕杰*/public static String getMacFromWifi(Context context){ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);State wifiState = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();if(wifiState == NetworkInfo.State.CONNECTED){//判断当前是否使用wifi连接WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);   if (!wifiManager.isWifiEnabled()) { //如果当前wifi不可用  wifiManager.setWifiEnabled(true);}WifiInfo wifiInfo = wifiManager.getConnectionInfo();return wifiInfo.getMacAddress();}return null;}

除了上面这种方法,网上还给出了另外两种方法:

1、通过调用Linux的busybox命令获取Mac地址:

 /*** 通过调用Linux的busybox命令获取Mac地址* * @author 高焕杰 */private static String getMacFromCallCmd(){try {String readLine = ""; Process process = Runtime.getRuntime().exec("busybox ifconfig");BufferedReader bufferedReader = new BufferedReader (new InputStreamReader(process.getInputStream()));while ((readLine = bufferedReader.readLine ()) != null) {//执行命令cmd,只取结果中含有"HWaddr"的这一行if(readLine.contains("HWaddr")){return readLine.substring(readLine.indexOf("HWaddr")+6, readLine.length()-1);}}}catch(Exception e) {  //如果因设备不支持busybox工具而发生异常。 e.printStackTrace(); }return null;}

注意:这种方法在Android Pad中可以准确获取到的Mac地址,但是在Android手机中无法准确获取到。

2、通过查询记录了MAC地址的文件(文件路径:“/proc/net/arp”)获取Mac地址:

/**  * 通过查询记录了MAC地址的文件(文件路径:“/proc/net/arp”)获取Mac地址* * @author 高焕杰*/private static String getMacFromFile(Context context){String readLine ="";BufferedReader bufferedReader = null;try {bufferedReader = new BufferedReader(new FileReader(new File("/proc/net/arp")));int rollIndex = 0;while((readLine = bufferedReader.readLine())!=null){if(rollIndex == 1){break;}rollIndex = rollIndex + 1;}} catch (IOException e) {e.printStackTrace();} finally {if (bufferedReader != null) {try {bufferedReader.close();} catch (IOException e) {e.printStackTrace();}}}if(readLine !=null && readLine.length()>1){String[] subReadLineArray = readLine.split(" ");int rollIndex = 1;for(int i = 0; i < subReadLineArray.length; ++i){if(!TextUtils.isEmpty(subReadLineArray[i])){if(rollIndex == 4){return subReadLineArray[i];}rollIndex = rollIndex + 1;}}}return null;}

注意:无论在Android Pad中还是在Android手机中,这种方法都无法准确获取到Mac地址。

0分下载示例

如何使用Java代码获取Android移动终端Mac地址相关推荐

  1. java自动获取ip_java自动获取电脑ip和MAC地址

    java自动获取电脑ip和MAC地址 利用getLocalHost获得计算机名称和ip getByInetAddress可以确定一个IP地址属于哪一个网络接口,这个IP地址通过命令行参数传入 用get ...

  2. java 读取流的字符编码格式_如何使用Java代码获取文件、文件流或字符串的编码方式...

    标签: 今天通过网络资源研究了一下如何使用Java代码获取文件.文件流或字符串的编码方式,现将代码与大家分享: package com.ghj.packageoftool; import info.m ...

  3. java获取jndi密码_用JAVA代码获取Weblogic配置的JNDI 数据源连接

    第一步:生成与JDK版本对应的weblogicjar,利用cmd 进入到weblogic_home 路径下进入到server/lib目录,然后运行  JDK  1.6 命令 "java -j ...

  4. java代码获取银行实时汇率

    java代码获取银行实时汇率 因为工作的时候甲方要求实施获取银行汇率,并且他们还不提供免费的接口,我就自己去网上找了接口,并写了实现代码,如果你需要的话直接复制粘贴就可以用了. 我用的是idea开发的 ...

  5. 如何使用java代码获取屏幕显示器个数

    使用java代码获取屏幕显示器个数,主要是使用java中的GraphicsEnvironment对象,关于GraphicsEnvironment对象的介绍,可以去GraphicsEnvironment ...

  6. 代码获取Android DeviceId

    目录 DeviceId是什么? 基础知识 国际移动设备识别码(IMEI) 移动设备识别码(MEID ) AndroidID 设备MAC地址 代码获取Android DeviceId? 参考文章 Dev ...

  7. Android Studio的代码笔记--SN序列号、MAC地址、IP地址学习

    关于获取设备SN序列号.MAC地址.IP地址的学习代码 SN序列号 获取SN序列号 MAC地址 获取MAC地址 IP.wlanIP.wlanMAC.网络.ping 获取以太网的IP地址 获取设备wla ...

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

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

  9. android获取网卡ip地址吗,Native.js获取android有线网络IP地址

    刚上手Native.js 请教问题如下: 想通过Native.js 获取Android有线网络IP地址,提示这一行console.log(en.hasMoreElements());报错: Uncau ...

  10. java 如何获取本机所有ip地址呢?

    转自: java 如何获取本机所有ip地址呢? ip地址简介: IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址. IP地址是IP协议提供的一种统一 ...

最新文章

  1. 高精度运算(C++实现)
  2. 域控服务器状态检查和标准备份
  3. pip安装mysql-python失败,并显示EnvironmentError:找不到mysql_config
  4. 表格数据清空还能恢复吗_数据恢复大师:清空回收站文件如何恢复?
  5. Set the roller speed
  6. 单寄存器加载与存储指令
  7. 在PowerShell中创建对象并添加属性成员
  8. Centos6.8 Mysql 设置自动备份与定期删除备份文件 自测部署安装
  9. 角色操作-角色添加流程分析
  10. 转:asp.net 负载平衡-Session相关
  11. c语言可以将负数强制转换成正数吗_C语言笔记(一、概述)
  12. Gartner:云安全的未来——中国的安全访问服务边缘架构
  13. Flutter自定义使用Dialog并更新Dialog中的内容
  14. Make a Crystal UVA - 11014 (容斥定理)
  15. ztree带有选项框的树形菜单使用
  16. Eclipse的环境设置
  17. m6000查看端口状态_M6000常用维护命令
  18. 10 - 箱梁网格划分
  19. 开源在线视频播放器flowplayer
  20. 《photoshopCS4中文版完全自学手册》视频教程

热门文章

  1. 在Android Studio中使用Method trace,查看某进程的所有线程trace的方法
  2. javascript 中Math函数在勾弦定理计算上的错误
  3. 做品牌 在男人和女人之间玩转巧妙和平衡
  4. 企业开发基础设施--序
  5. 15.docker start / stop / restart / rm / pause / unpause
  6. 7.卷1(套接字联网API)---套接字选项
  7. 27.MySQL Status
  8. 6.关于 MySQL
  9. 2.kafka 安装
  10. Oracle 触发器详解