android 获取手机的MAC地址
以下代码可以直接负责使用
private static final String marshmallowMacAddress = "02:00:00:00:00:00";
private static final String fileAddressMac = "/sys/class/net/wlan0/address";
/**
* 获取手机的MAC地址
*
* @param context
* @return
*/
public static String getAdresseMAC(Context context) {
WifiManager wifiMan = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInf = wifiMan.getConnectionInfo();
if (wifiInf != null && marshmallowMacAddress.equals(wifiInf.getMacAddress())) {
String result = null;
try {
result = getAdressMacByInterface();
if (result != null) {
return result;
} else {
result = getAddressMacByFile(wifiMan);
return result;
}
} catch (IOException e) {
Log.e("MobileAccess", "Erreur lecture propriete Adresse MAC");
} catch (Exception e) {
Log.e("MobileAcces", "Erreur lecture propriete Adresse MAC ");
}
} else {
if (wifiInf != null && wifiInf.getMacAddress() != null) {
return wifiInf.getMacAddress();
} else {
return "";
}
}
return marshmallowMacAddress;
}
private static String getAdressMacByInterface() {
try {
List<NetworkInterface> all = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface nif : all) {
if (nif.getName().equalsIgnoreCase("wlan0")) {
byte[] macBytes = nif.getHardwareAddress();
if (macBytes == null) {
return "";
}
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 e) {
Log.e("MobileAcces", "Erreur lecture propriete Adresse MAC ");
}
return null;
}
private static String getAddressMacByFile(WifiManager wifiMan) throws Exception {
String ret;
int wifiState = wifiMan.getWifiState();
wifiMan.setWifiEnabled(true);
File fl = new File(fileAddressMac);
FileInputStream fin = new FileInputStream(fl);
ret = crunchifyGetStringFromStream(fin);
fin.close();
boolean enabled = WifiManager.WIFI_STATE_ENABLED == wifiState;
wifiMan.setWifiEnabled(enabled);
return ret;
}
private static String crunchifyGetStringFromStream(InputStream crunchifyStream) throws IOException {
if (crunchifyStream != null) {
Writer crunchifyWriter = new StringWriter();
char[] crunchifyBuffer = new char[2048];
try {
Reader crunchifyReader = new BufferedReader(new InputStreamReader(crunchifyStream, "UTF-8"));
int counter;
while ((counter = crunchifyReader.read(crunchifyBuffer)) != -1) {
crunchifyWriter.write(crunchifyBuffer, 0, counter);
}
} finally {
crunchifyStream.close();
}
return crunchifyWriter.toString();
} else {
return "No Contents";
}
}
//将获取的int(如:1866655656)转为真正的ip地址,参考的网上的,修改了下
public static String intToIp(int i) {
return (i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF) + "." + ((i >> 24) & 0xFF);
}
android 获取手机的MAC地址相关推荐
- Android中获取手机 IMEI Mac地址 IP地址
一.获取手机IMEI 手机在生产时,每部手机均有一个唯一的标识(ID),国际上采用国际移动设备身份码(IMEI, International Mobile Equipment Identity).IM ...
- 获取手机mac php,IOS_iOS如何获取手机的Mac地址,首先说明下,下面两种方法均 - phpStudy...
iOS如何获取手机的Mac地址 首先说明下,下面两种方法均可以获得手机的mac地址,但是有个限制,是在iOS7以下才可以获得.iOS7以后苹果对于sysctl和ioctl进行了技术处理,MAC地址返回 ...
- android 获取设备的mac地址,Android编程获取设备MAC地址的实现方法
本文实例讲述了Android编程获取设备MAC地址的实现方法.分享给大家供大家参考,具体如下: /** * 获取设备的mac地址 * * @param ac * @param callback * 成 ...
- iOS获取手机的Mac地址
首先说明下,下面两种方法均可以获得手机的mac地址,但是有个限制,是在iOS7以下才可以获得.iOS7以后苹果对于sysctl和ioctl进行了技术处理,MAC地址返回的都是02:00:00:00:0 ...
- php获取手机的mac地址,Android手机获取Mac地址的方法
[导读]这篇文章主要为大家详细介绍了Android手机获取Mac地址的方法,具有一定的参考价值 最常用的方法,通过WiFiManager获取:/** * 通过WiFiManager获取mac地址 * ...
- Android获取手机WiFi IP地址,MAC地址和网关地址程序实例
现在博主在上大三,正在学习一些计算机网络的一些概念,知道了局域网ip和网关ip不同的概念,当时还纳了闷了2的32次方好像不咋够用啊,原来是这个样子. 由于之前学过一段时间的Android,同时又在上A ...
- Android 获取IP与mac地址
没什么好说的,直接上java代码 import java.net.NetworkInterface; import java.util.ArrayList; import java.util.Coll ...
- Android获取手机及路由器的Mac地址和IP地址
Android获取Mac地址及IP地址需要添加权限, 在AndroidManifest.xml中: <uses-permission android:name="android.per ...
- android 获取网卡mac_Android获取本机Mac地址及IP地址方法
1.Android 获取本机Mac 地址方法: 需要在AndroidManifest.xml文件中添加权限: public String getLocalMacAddress() { WifiMan ...
- Android获取手机设备信息并区分真机与模拟器
有些时候我们不想App在模拟器上被别人使用,所以我们禁止在模拟器上使用App 判断是否为真机: 根据以下四图,我们可以对真机与模拟器来做一个简单区分: 如果Serial码为unkonwn或者andro ...
最新文章
- Echo团队Alpha冲刺随笔 - 第九天
- “诺奖风向标”--2020年斯隆研究奖公布,其中有16位华人学者获奖!
- 铁路网上购票需要完善但值得鼓励
- pythontcp_TCP编程
- 死信队列和延迟队列_在实践中使用延迟队列
- exit与_exit函fork与vfork函数
- jquery显示和隐藏元素
- 世界你好! 个人网站搭建过程
- 此模块的调试信息中缺少源信息_22python中的模块
- c++读取和写入TXT文件的整理 1
- Linux - 修改系统的max open files、max user processes (附ulimit的使用方法)
- python读取dat文件并保存为Excel格式
- 集成电路可测性设计DFT技术入门概论--MBIST技术报告
- 2019全球最强100家AI公司名单出炉,6家中国公司上榜
- Rabbit基础概念
- MKS Robin nano V3.0主板使用RRF 固件教程
- 利用python实现判断两条直线是否平行,若相交,输出交点。
- 邮储社招Java笔试题_2019年及历年中国邮政储蓄银行社招笔试题和参考答案6套
- 2022年G2电站锅炉司炉操作证考试题库及答案
- 支付宝信用卡还款即将收费,3个方法免手续费!
热门文章
- android工厂测试开发,Android开机启动工程测试APK功能开发
- Server 2012 R2 安装 Microsoft Windows CredSSP 远程执行代码漏洞补丁
- promise兼容性问题
- VMware虚拟机磁盘扩容
- Spring框架RCE 0day漏洞,官方解决方案
- 在Sony VAIO VGN-UX27CN UMPC上安装Windows XP之经验谈
- matlab gui中断程序,MATLAB GUI的中斷程序
- 编程分钟转化小时怎么编_CNC数控加工中心编程好学吗?多年数控编程工程师指点迷津...
- 实验室虚拟仿真建设之技术选型剖析
- 网络通信编程大作业--深度研究爬虫技术