php获取手机的mac地址,Android手机获取Mac地址的方法

[导读]这篇文章主要为大家详细介绍了Android手机获取Mac地址的方法,具有一定的参考价值

最常用的方法,通过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 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python使用蓝牙功能_python bluetooth蓝牙信息获取蓝牙设备类型的方法

python 获取蓝牙设备类型 扫描蓝牙设备获取到的信息中,无法判断扫描到的蓝牙设备属于什么类型的设备。 扫描蓝牙信息使用的是python 里面的bluetooth模块。 首先扫描出来的是这样的信息 (74:60:FA:FD:FC:49,HUAWEI P30,5898764) 可根据5898764来判断是什么蓝牙设备。…

MySQL建表字段长度的限制、汉字和字母占字节数

varchar(N),N指的是最大字符数,不是字节数。 记住: (1)MySQL要求一个行的定义长度不能超过65535。 (2)单个字段如果大于65535,则转换为TEXT 。 (3)单行最…

linux 服务器启用端口,linux服务器放行端口

一、默认使用iptables的系统(例如centos6)1、关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放。下面是命令实现:iptables -P INPUT DROPiptables -P FORWARD DROPiptables -P OUTPUT DROP再用命令iptables -L -n查看 是否设置好, 好看到全部 DROP 了这…

python3 xpath_Python 3中用XPath解析XML

我有以下xml:Biscuits Wrapped Finished Biscuits Biscuits (Wrapped)Biscuits Sweet Finished Biscuits Biscuits (Sweets)Biscuits Savoury Finished Biscuits Biscuits For Cheese....我已使用以下代码将其加载到树中:try: groups etree.parse(PRODU…

MySQL 无符号和有符号的区别

随笔记录: mysql无符号和有符号的区别 无符号unsigned 表示设置的的数据为0或者正数; 有符号则可以是负数 -; 内存占比 有符号 0-255 无符号 -127~127

linux下tomcat启动后无进程,Linux中Tomcat shutdown.sh后进程仍然存在解决办法

最近我们在使用Jenkins自动化部署项目时,在生产liunx环境下,使用脚本shutdown.sh停止tomcat服务,然后再start之后发现应用无法访问了,后台查看tomcat进程是发现有个2个tomcat进程,说明之前的shutdown并没有完全停掉tom…

扫地机器人电路原理图_扫地机有这一台就够了:石头扫地机器人T6 首拆

听说集齐13台扫地机器人可以召唤扫地机神兽,所以集齐了22台扫地机后我的神兽呢?自从上个月入手了石头科技出品的小瓦青春版扫地机之后已经集齐了所有小米(石头)系扫地机。小瓦青春版是一款无序清洁的扫地机产品,也是石头科技价格最低的入门级…

让我放弃FastDFS拥抱MinIO的8个瞬间

目前可用于文件存储的网络服务选择有很多,比如阿里云OSS、七牛云、腾讯云等等,但是收费都有点小贵。为了帮公司节约成本,之前一直是使用fastDFS作为文件服务器,准确的说是图片服务器。直到我发现了MinIO,我决定放弃Fas…

linux内核+红黑树删除,关于linux:Linux内核红黑树原理概括

二叉查找树因为在频繁的动静更新过程中,可能会呈现树的高度远大于 log2n的状况,所以就会导致各个操作效率降落,最坏的状况下就会进化为链表,变为O(n).很显著,想要解决这个问题,无效的一种方法就…

http 和 https_Golang设置https访问,以及http如何重定向到https

设置https访问:初始代码为http监听:func main() { server : &http.Server{ Addr: ":8080", ... } go func() { if err : server.ListenAndServe(); err ! nil && err ! http.ErrServerClosed { log.Fa…

盘点分布式文件存储系统____分布式文件存储系统简介

盘点分布式文件存储系统 在项目的数据存储中,结构化数据通常采用关系型数据库,非结构化数据(文件)的存储就有很多种方式,服务器本地存储、Nas挂载、ftp等等,今天就来盘点一下,分布式文件存储系统…

linux 64 32 编译支持,在64位linux上编译32位程序 for i386 intel

编辑中# ld -VGNU ld version 2.15.92.0.2 20040927Supported emulations:elf_x86_64elf_i386i386linux#ld -m elf_i386Along with the -m32 flag in gcc, you may need to include the -melf_i386 flag for ld to properly link the 32bit objectfiles to the 32bit libraries…

linux ortp 编译,Linux下oSIP的编译使用应该是很简单的,其Install说明文档.doc

Linux下oSIP的编译使用应该是很简单的,其Install说明文档.docLinux下oSIP的编译使用应该是很简单的,其Install说明文档里也介绍的比较清楚,本文主要就oSIP在Windows平台下VC 6.0开发环境下的使用作出描述。  虽然oSIP的开发人员也说明了,oS…

常见分布式文件存储介绍、选型比较、架构设计

数据正成为世界上最有价值的资源,分布式文件存储是应对数据爆炸的最好解决方案,那就会涉及到分布式文件存储方案、选型、架构设计等。 分布式文件存储的来源 在这个数据爆炸的时代,产生的数据量不断地在攀升,从GB,TB,PB,ZB.挖掘…

python中id函数的用法_用id函数做几个测试

Python内置的id函数其实非常简单,就是将参数对象的内存地址返回,即id函数返回的是一个很大的整数(地址)。基于Python语言的特性,本文做了几个测试,还比较有趣。 相同整数的id相同 >>> a 6 >&g…

分布式文件系统对比与选型参考

一、分布式文件系统 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户…

为什么python工程师掌握这些就够了_Python工程师薪资飙升,Python这些技能你掌握了吗...

Python的火热,也带动了工程师们的就业热。那么,Python的市场需求和工程师待遇到底如何呢?今天我们来看看具体数据。2019年招聘python工程师薪资飙升,Python这些技能你掌握了吗?Python岗位和待遇和要求怎么样?下面从招…

linux安装ld编译器,科学网—手动安装特定版本的gcc编译器 - 亓欣波的博文

Linux发行版中一般预装了gcc编译器,版本随系统不同而不同,有时候不想用(或者是不能用)系统默认的gcc编译器,就需要自己编译特定版本的gcc编译器。这里以在Ubuntu14.04环境(默认gcc为4.8.2)安装gcc4.6.3为例,记录一下安装过程。整个…

canvas js 绘图插件_Canvas专题—绘制柱状图(2)

目标:在我们了解过前两章节的知识点以后,为了把知识点进行连结,拓展,现在我们做一个图表吧。看一个echartst图表当今Canvas库有很多供我们选择,比如,echarts在很大程度上能够提高我们的工作效率&#xff0c…