关于获取安卓设备的mac地址
今日发现一个问题,系统要求从设备上获取一个唯一码作为当前登录用户的唯一标识;
之前尝试过很多方法,最后决定采用mac地址。
官方获取mac地址的方法是:
public static String getWifiMac(Context ctx) {WifiManager wifi = (WifiManager) ctx.getSystemService(Context.WIFI_SERVICE);WifiInfo info = wifi.getConnectionInfo();String str = info.getMacAddress();if (str == null) str = "";return str;}
但是最后发现,某些设备上(比如乐视2手机,谷歌的Nexus9 pad),用这种方式获取的mac地址都是02:00:00:00:00:00 .
并不能起到唯一标识的作用。
后来发现,Android的内核是linux,那么应该可以通过shell命令的方式来获取。
代码如下:
/*** 这是使用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;}
解决上述两种设备上mac地址获取错误的问题。
可见,就算是谷歌官方给出的解决方案也未必可靠,要根据实际情况酌情考虑使用。
另外,尝试了一下在4G网络下获取mac地址,结果是null。说明 4G网络下不会有mac地址这一说,因为根本获取不到。3G网也应该类似(没做试验)。
但是有些设备,运行shell命令会报错:权限被拒绝。(Nexus 9 pad亲测,这个方法不灵);这就很尴尬了。。
转载于:https://www.cnblogs.com/hankzhouAndroid/p/6554131.html
关于获取安卓设备的mac地址相关推荐
- android 获取网卡mac_Java获取Linux安卓设备的mac地址方法
Java如何获取Linux或安卓Android设备的mac地址呢?方法非常简单,只需要使用下方代码即可轻松通过java获取mac地址了,代码如下:public String getMacAddress ...
- uni-app 获取移动设备的MAC地址
getMacAddress() { var macAddress = ''; if (plus.os.name == 'Android') { console.log("plus ...
- android arp工具,GitHub - SummerSnow274/ARP_sed_rev: 在Android通过ARP询问实现获取同一网络所有设备的MAC地址,AP隔离的网络除外...
ARP_sed_rev 在Android通过ARP询问实现获取同一网络所有设备的MAC地址,AP隔离的网络除外 arpsed.c 编译:gcc arpsed.c -o arpsed 运行:sudo . ...
- 利用ioctl获取本机指定设备的MAC地址
// 利用ioctl获取本机指定设备的MAC地址 #include<stdio.h> #include<string.h> #include<stdlib.h> # ...
- android 获取设备的mac地址,Android编程获取设备MAC地址的实现方法
本文实例讲述了Android编程获取设备MAC地址的实现方法.分享给大家供大家参考,具体如下: /** * 获取设备的mac地址 * * @param ac * @param callback * 成 ...
- android 获取mac c语言,获取设备的mac地址和IP地址(android6.0以上专用)
/** * 获取设备HardwareAddress地址 * @return */ public static String getMachineHardwareAddress(){ Enumerati ...
- Android studio 获取设备的Mac地址,wifi和以太网均可使用
/*** 获取设备的Mac地址* @return Mac地址*/public static String getLocalMacAddress() {String Mac=null;try{Strin ...
- android获取wifi mac地址吗,Android获取当前WiFi的MAC地址-适配所有版本
** Android获取当前WiFi的MAC地址 ** package com.dogness.platform.utils; import android.content.Context; impo ...
- linux临时配置mac地址,Linux获取网卡型号、mac地址、修改IP地址的几种方法
1.获取所有有(无)网卡型号 方法一.ifconfig 用法:ifconfig | grep | cut -d ':' -f 1 ubuntu root@ubuntu:~# ifconfig | gr ...
最新文章
- 【WinForm】“System.Data.SqlClient.SqlConnection”的类型初始值设定项引发异常
- iOS Category小举例
- 可以直接用的“ html转字符串string”方法
- 【生活】SSD 接口的分类
- 第十届蓝桥杯JavaB组总结
- Spring Boot——[java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration]解决方案
- B站up主用AI还原李焕英 动态影像
- python 中的eval与exec
- 串口操作之API篇 CreateFile
- 【OpenGL】顶点变换常用函数总结
- 演练 网站的导航栏 0920
- Ubuntu 15.04下安装Docker
- Python:学习笔记
- C++编译器的函数名修饰规则
- 统计学习之第二天(可汗学院公开课:统计学)
- Apache Log4j 远程代码注入漏洞
- python基础思维导图
- 遇到不同网段互相访问的一些问题的总结
- 小米笔记本用来开发java_小米笔记本 Pro用来编程怎么样?
- 线性代数(三十四) : 广义特征向量
热门文章
- 设计模式17_命令模式
- 下列有关计算机系统叙述正确,()下列有关计算机系统软件的叙述正确的是____
- 12505 java_Java jdbc Oracle error: ORA 12505
- 报表开发之自定义函数
- 深入浅出 数据库索引
- 医学专业考计算机三级,2020年9月中国医科大学计算机等级考试报名通知
- PyCharm汉化后无法打开Settings设置
- 二分搜索:lower_bound 与 upper_bound 函数
- pandas中DataFrame的学习笔记~
- 【抄】更改eclipse配置