Android:获取设备的mac地址可靠的方法
16lz
2023-05-28
/** * 获取设备的mac地址 * * @param ac * @param callback * 成功获取到mac地址之后会回调此方法 */public static void getMacAddress(final Activity ac, final SimpleCallback callback) {final WifiManager wm = (WifiManager) ac .getSystemService(Service.WIFI_SERVICE);// 如果本次开机后打开过WIFI,则能够直接获取到mac信息。立刻返回数据。WifiInfo info = wm.getConnectionInfo();if (info != null && info.getMacAddress() != null) {if (callback != null) {callback.onComplete(info.getMacAddress());}return;}// 尝试打开WIFI,并获取mac地址if (!wm.isWifiEnabled()) {wm.setWifiEnabled(true);}new Thread(new Runnable() {@Overridepublic void run() {int tryCount = 0;final int MAX_COUNT = 10;while (tryCount < MAX_COUNT) {final WifiInfo info = wm.getConnectionInfo();if (info != null && info.getMacAddress() != null) {if (callback != null) {ac.runOnUiThread(new Runnable() {@Overridepublic void run() {callback.onComplete(info.getMacAddress());}});}return;}SystemClock.sleep(300);tryCount++;}// 未获取到mac地址if (callback != null) {callback.onComplete(null);}}}).start();}
SimpleCallback是一个简单的回调接口:
public interface SimpleCallback {void onComplete(String result);}
更多相关文章
- 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
- Android屏幕分辨率正确获取及PX,DPI,DP,SP等的对应关系
- Android平台上优秀的开源项目
- android 获取唯一标识
- android拍照与读取相册
- Android(安卓)热点开关状态的判断和获取热点ssid
- [RK3399][Android7.1.1] WifiAp:开机默认打开wifi热点
- Android软键盘适配问题
- GitHub 优秀的 Android(安卓)开源项目