没有合适的资源?快使用搜索试试~ 我知道了~
首页Android开发获取手机Mac地址适配所有Android版本
最近由于项目需要MAC地址的记录,搞了一个通用的适配类,目前经过测试可以适配Android所有版本,我测试过的设备系统Android 4 5 6 7 7+都可以获取到,废话不多说直接上代码,简洁: 该类分为三类:Android6.0以下、6.0以上7.0以下、7.0以上 首先是获取MAC的整合方法: public static String getMac(Context context) { String strMac = null; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { Log.e(=====
资源详情
资源评论
资源推荐

Android开发获取手机开发获取手机Mac地址适配所有地址适配所有Android版本版本
最近由于项目需要MAC地址的记录,搞了一个通用的适配类,目前经过测试可以适配Android所有版本,我测试过的设备系统
Android 4 5 6 7 7+都可以获取到,废话不多说直接上代码,简洁:
该类分为三类:Android6.0以下、6.0以上7.0以下、7.0以上
首先是获取MAC的整合方法:
public static String getMac(Context context) {
String strMac = null;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
Log.e("=====", "6.0以下");
Toast.makeText(context, "6.0以下", Toast.LENGTH_SHORT).show();
strMac = getLocalMacAddressFromWifiInfo(context);
return strMac;
} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N
&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Log.e("=====", "6.0以上7.0以下");
Toast.makeText(context, "6.0以上7.0以下", Toast.LENGTH_SHORT).show();
strMac = getMacAddress(context);
return strMac;
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Log.e("=====", "7.0以上");
if (!TextUtils.isEmpty(getMacAddress())) {
Log.e("=====", "7.0以上1");
Toast.makeText(context, "7.0以上1", Toast.LENGTH_SHORT).show();
strMac = getMacAddress();
return strMac;
} else if (!TextUtils.isEmpty(getMachineHardwareAddress())) {
Log.e("=====", "7.0以上2");
Toast.makeText(context, "7.0以上2", Toast.LENGTH_SHORT).show();
strMac = getMachineHardwareAddress();
return strMac;
} else {
Log.e("=====", "7.0以上3");
Toast.makeText(context, "7.0以上3", Toast.LENGTH_SHORT).show();
strMac = getLocalMacAddressFromBusybox();
return strMac;
}
}
return "02:00:00:00:00:00";
}
6.0以下方法,Google提供的公有方法,需要权限
<uses-permission android:name=”android.permission.ACCESS_WIFI_STATE” />
/**
* 根据wifi信息获取本地mac
* @param context
* @return
*/
public static String getLocalMacAddressFromWifiInfo(Context context){
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo winfo = wifi.getConnectionInfo();
String mac = winfo.getMacAddress();
return mac;
}
android 6.0及以上、7.0以下
android 6.0以后 将不再能通过 wifimanager 获取mac,获取到的mac将是固定的:02:00:00:00:00:00 。
然而我开发的sdk就是通过wifimanager获取的mac。
android sdk后来做了6.0适配,通过cat /sys/class/net/wlan0/address,可以在6.0上获取mac地址。













安全验证
文档复制为VIP权益,开通VIP直接复制

评论0