获取设备mac地址,不打开wifi列表

1.简单 暴力直接上代码

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView tv_mac= (TextView) findViewById(R.id.tv_mac);
        tv_mac.setText("本机的mac地址"+getDeviceInfo(this));
        Log.e("mac",getDeviceInfo(this));
    }
    private  String getDeviceInfo(Context context) {
        try {
            String mac = null;
            FileReader fstream = null;
            try {
                fstream = new FileReader("/sys/class/net/wlan0/address");
            } catch (FileNotFoundException e) {
                fstream = new FileReader("/sys/class/net/eth0/address");
            }
            BufferedReader in = null;
            if (fstream != null) {
                try {
                    in = new BufferedReader(fstream, 1024);
                    mac = in.readLine();
                } catch (IOException e) {
                } finally {
                    if (fstream != null) {
                        try {
                            fstream.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    if (in != null) {
                        try {
                            in.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
            return mac;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
2.效果图



### Android 设备 MAC 地址WiFi 接口 MAC 地址获取 #### 使用 `WifiManager` 获取 WiFi 接口的 MAC 地址 在较新的 Android 版本中,出于隐私保护的目的,直接通过 `WifiManager` 获取设备MAC 地址可能会遇到权限问题或返回默认值 "02:00:00:00:00:00"[^1]。为了正确获取 MAC 地址,可以采用如下方式: ```java import android.content.Context; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; public class MacAddressUtil { public static String getWifiMacAddress(Context context) { WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); if (wifi != null) { WifiInfo wifiInfo = wifi.getConnectionInfo(); if (wifiInfo != null && !StringUtil.isNullOrEmpty(wifiInfo.getMacAddress())) { return wifiInfo.getMacAddress().replaceAll(":", "").trim().toUpperCase(); } } return null; } } ``` 此代码片段展示了如何利用 `WifiManager` 和 `WifiInfo` 类来访问当前连接 Wi-FiMAC 地址[^3]。 需要注意的是,在某些情况下即使 Wi-Fi 已经启用并连接成功,也可能因系统版本差异或其他因素导致无法正常读取 MAC 地址[^2]。 对于 API Level 29 及以上版本的应用程序来说,Google 对于应用程序访问硬件标识符进行了严格限制,因此上述方法可能再适用。此时建议开发者考虑其他替代方案,比如使用蓝牙适配器或者其他唯一识别码作为应用内部逻辑中的设备标识[^4]。 另外一种情况是在打开Wi-Fi的情况下也能获得MAC地址,这取决于具体的Android版本以及制造商设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值