如何判断Android设备是否开启DHCP功能或使用静态IP?
Android设备判断DHCP/静态IP配置的方法
WiFi网络判断
通过系统WifiManager可获取当前WiFi连接的IP配置类型,核心是检查IpConfiguration中的ipAssignment字段:
权限声明
在AndroidManifest.xml中添加必要权限:<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- Android 10+ 必需 -->代码实现
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); if (wifiInfo != null) { // 获取当前WiFi连接的IP配置 IpConfiguration ipConfig = wifiManager.getConfiguredNetworks().stream() .filter(network -> network.networkId == wifiInfo.getNetworkId()) .findFirst() .map(WifiConfiguration::getIpConfiguration) .orElse(null); if (ipConfig != null) { if (ipConfig.getIpAssignment() == IpConfiguration.IpAssignment.STATIC) { // 静态IP配置 Log.d("IP_CONFIG", "WiFi使用静态IP"); } else if (ipConfig.getIpAssignment() == IpConfiguration.IpAssignment.DHCP) { // DHCP配置 Log.d("IP_CONFIG", "WiFi使用DHCP"); } } }
以太网(网线)网络判断
对于以太网连接,需通过ConnectivityManager获取网络链接属性,判断是否存在静态IP配置:
权限声明
在AndroidManifest.xml中添加:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />代码实现
ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); Network activeNetwork = connManager.getActiveNetwork(); if (activeNetwork != null) { LinkProperties linkProperties = connManager.getLinkProperties(activeNetwork); if (linkProperties != null) { // 检查是否有静态IP配置 StaticIpConfiguration staticIpConfig = linkProperties.getStaticIpConfiguration(); if (staticIpConfig != null) { // 静态IP配置 Log.d("IP_CONFIG", "以太网使用静态IP"); } else { // DHCP配置(无静态IP则默认DHCP) Log.d("IP_CONFIG", "以太网使用DHCP"); } } }
注意事项
- Android版本差异:部分API在Android 8.0(API 26)及以上可用,需针对低版本做兼容处理。
- 权限动态申请:Android 6.0+ 需动态申请
ACCESS_FINE_LOCATION等危险权限,否则无法获取WiFi配置信息。 - 以太网适配:部分设备的以太网配置可能依赖厂商自定义API,上述方法为通用系统API实现。
内容的提问来源于stack exchange,提问作者lz_researcher
相关产品推荐
相关产品推荐

