Android 获取WIFI名称和MAC地址的5种方法
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的限制和使用注意事项。
希望以上内容对您有所帮助!
原文地址: https://www.cveoy.top/t/topic/mYTZ 著作权归作者所有。请勿转载和采集!