获取Android手机MAC的一些方法
来源:互联网 发布:饥荒联机百科全书 mac 编辑:程序博客网 时间:2024/06/11 09:03
获取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; }
`
0 0
- 获取Android手机MAC的一些方法
- 获取android 手机的mac
- Android 手机获取Mac地址的几种方法
- 获取的android手机的MAC地址
- android的一些常用手机信息获取
- android的一些常用手机信息获取
- android 获取手机的一些硬件信息
- Android 获取手机的一些基本信息
- android的一些常用手机信息获取
- 转: 获取Android手机的一些信息
- Android 获取手机的一些基本信息类
- android 获取手机信息的一些知识
- Android获取手机Mac地址
- Android获取手机MAC地址
- Android手机获取Mac地址
- Android获取手机Mac地址
- 获取android手机mac地址
- 获取android手机总内存和可用内存的一些方法
- Java数组练习(六)打印指定行数的杨辉三角
- ESP32编译环境搭建【Windows平台】
- JavaScript一些用法
- SSD(Single Shot MultiBox Detector):因为数据集中图像通道数不对导致的训练异常
- GreenDao3.0基本配置和多表联查
- 获取Android手机MAC的一些方法
- live555传输音视频流
- mosquitto 单向SSL 协议内容抓包简单分析
- MFC下绘制曲线工具Teechart使用
- 编写linux驱动所用到的头文件
- 人工神经网络
- 每日打卡 2017.04.13 计算几何
- POJ1700 Crossing River(贪心算法训练)
- POJ1323 Game Prediction(贪心算法训练)