Android 获取WIFI名称和MAC地址的5种方法

在Android开发中,经常需要获取当前连接的WIFI名称和MAC地址。以下列举了5种常用的方法,可以根据实际情况选择最适合的方法:

1. 使用WifiManager获取WIFI名称和MAC地址

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();
String macAddress = wifiInfo.getMacAddress();

2. 使用NetworkInterface获取MAC地址

try {
    List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
    for (NetworkInterface intf : interfaces) {
        byte[] mac = intf.getHardwareAddress();
        if (mac == null) {
            continue;
        }
        StringBuilder buf = new StringBuilder();
        for (byte aMac : mac) {
            buf.append(String.format("%02X:", aMac));
        }
        if (buf.length() > 0) {
            buf.deleteCharAt(buf.length() - 1);
        }
        if (intf.getName().equalsIgnoreCase("wlan0")) {
            String macAddress = buf.toString();
            break;
        }
    }
} catch (Exception e) {
    e.printStackTrace();
}

3. 使用WifiP2pManager获取WIFI名称和MAC地址

WifiP2pManager wifiP2pManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
WifiP2pManager.Channel channel = wifiP2pManager.initialize(this, getMainLooper(), null);
wifiP2pManager.requestGroupInfo(channel, new WifiP2pManager.GroupInfoListener() {
    @Override
    public void onGroupInfoAvailable(WifiP2pGroup group) {
        if (group != null) {
            String ssid = group.getNetworkName();
            String macAddress = group.getOwner().deviceAddress;
        }
    }
});

4. 使用ConnectivityManager获取WIFI名称

ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
String ssid = wifiInfo.getExtraInfo();

5. 使用BroadcastReceiver监听WIFI状态变化获取WIFI名称和MAC地址

BroadcastReceiver wifiReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
            NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
            if (networkInfo.isConnected()) {
                WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
                WifiInfo wifiInfo = wifiManager.getConnectionInfo();
                String ssid = wifiInfo.getSSID();
                String macAddress = wifiInfo.getMacAddress();
            }
        }
    }
};
IntentFilter intentFilter = new IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION);
registerReceiver(wifiReceiver, intentFilter);

注意:

  • 这些方法可能受到设备和Android版本的限制,有些方法可能无法获取到WIFI名称和MAC地址。
  • 为了保护用户隐私,部分Android设备可能会屏蔽或限制对MAC地址的访问。
  • 请在使用这些方法之前仔细阅读Android官方文档,了解相关API的限制和使用注意事项。

希望以上内容对您有所帮助!

Android 获取WIFI名称和MAC地址的5种方法

原文地址: https://www.cveoy.top/t/topic/mYTZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录