Android获取手机IP与MAC地址方法

5星 · 超过95%的资源 需积分: 48 129 下载量 26 浏览量 更新于2024-09-19 2 收藏 1KB TXT 举报
"这篇资源主要介绍了在Android平台上如何获取手机的IP地址和MAC地址。" 在Android开发中,有时我们需要获取设备的网络相关信息,比如IP地址和MAC地址,这对于网络通信或者设备识别是非常重要的。以下是如何在Android中实现这一功能的详细步骤: 首先,我们来看如何获取手机的MAC地址。MAC地址(Media Access Control Address)是网络接口控制器的一个唯一标识,每个网络设备都有一个唯一的MAC地址。在Android中,我们通常通过`WifiManager`来获取连接的Wi-Fi接口的MAC地址。以下是一个简单的示例代码: ```java // 初始化WifiManager static WifiManager wifiManager; static WifiInfo wifiInfo; public static String getMacAddress(Context c) { // 获取WifiManager服务 wifiManager = (WifiManager) c.getSystemService(Context.WIFI_SERVICE); // 获取当前连接的WifiInfo wifiInfo = wifiManager.getConnectionInfo(); // 打印并返回Mac地址 System.out.println("Wi-Fi MAC 地址:" + wifiInfo.getMacAddress()); return wifiInfo.getMacAddress(); } ``` 这段代码首先通过`getSystemService`方法获取`WifiService`,然后调用`getConnectionInfo`来获取连接的Wi-Fi信息,最后通过`getMacAddress`获取到MAC地址。 接下来,我们来看如何获取手机的IP地址。IP地址(Internet Protocol Address)是网络通信中设备的逻辑地址,用于标识网络中的唯一节点。在Android中,我们可以遍历所有网络接口来获取非回环的IP地址。以下是一个获取本地IP地址的示例代码: ```java public static String getLocalIpAddress() { try { // 遍历所有网络接口 for ( Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) { NetworkInterface intf = en.nextElement(); // 遍历接口下的所有IP for ( Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { InetAddress inetAddress = enumIpAddr.nextElement(); // 如果不是回环地址(如127.0.0.1) if (!inetAddress.isLoopbackAddress()) { // 打印并返回IP地址 System.out.println("IP 地址:" + inetAddress.getHostAddress().toString()); return inetAddress.getHostAddress().toString(); } } } } catch (SocketException ex) { Log.e("WifiPreferenceIpAddress", ex.toString()); } // 如果出现异常或者没有找到非回环IP,返回null return null; } ``` 这段代码使用了`NetworkInterface`类来枚举所有网络接口,并通过`getInetAddresses`获取接口下的所有IP地址。如果发现非回环IP(即不是127.0.0.1),就返回这个IP地址。 需要注意的是,由于Android系统的安全性和权限控制,从Android 6.0(API级别23)开始,访问网络信息可能需要申请相应的权限,例如`ACCESS_WIFI_STATE`和`INTERNET`。在AndroidManifest.xml中添加这些权限,确保在运行时能够正常获取IP和MAC地址: ```xml <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> ``` 获取Android设备的IP地址和MAC地址需要对网络接口有一定的了解,并且需要处理好权限问题。以上代码可以作为基础,根据实际需求进行调整和优化。