InetAddress
类的getLocalHost()
方法获取IPv4地址。Android获取IPv4地址
介绍
在Android系统中,我们可以通过以下方法获取设备的IPv4地址。
使用WiFi网络获取IPv4地址
1、需要获取WiFi适配器对象;
2、通过WiFi适配器对象的getIpAddress()方法获取IPv4地址;
3、将获取到的IPv4地址进行格式化输出。
使用移动数据网络获取IPv4地址
1、需要获取移动数据适配器对象;
2、通过移动数据适配器对象的getIpAddress()方法获取IPv4地址;
3、将获取到的IPv4地址进行格式化输出。
示例代码
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; public class IPAddressUtil { public static String getIPAddress(Context context) { String ipAddress = null; try { // 获取WiFi适配器对象 WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); int ip = wifiInfo.getIpAddress(); ipAddress = String.format("%d.%d.%d.%d", (ip & 0xff), (ip >> 8 & 0xff), (ip >> 16 & 0xff), (ip >> 24 & 0xff)); } catch (Exception e) { e.printStackTrace(); } if (ipAddress == null || ipAddress.isEmpty()) { try { // 获取移动数据适配器对象 ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isConnected()) { // 获取移动数据的IPv4地址 for (NetworkInterface networkInterface : Collections.list(NetworkInterface.getNetworkInterfaces())) { for (InetAddress inetAddress : Collections.list(networkInterface.getInetAddresses())) { if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) { ipAddress = inetAddress.getHostAddress(); break; } } if (ipAddress != null) { break; } } } else { ipAddress = "无网络连接"; } } catch (Exception e) { e.printStackTrace(); } } return ipAddress; } }
相关问题与解答
1、Q: 为什么获取到的IPv4地址可能为空或显示"无网络连接"?
A: 如果设备没有连接到任何网络或者无法获取网络信息,则获取到的IPv4地址可能为空或显示"无网络连接",请确保设备已连接到可用的网络并正确配置了网络权限。
2、Q: 如何检查设备是否已连接到WiFi网络?
A: 可以使用ConnectivityManager类中的getNetworkInfo()方法来获取当前活动的网络信息,然后通过NetworkInfo类的isConnected()方法来检查设备是否已连接到WiFi网络,如果返回值为true,则表示已连接到WiFi网络。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/526974.html