gpt4 book ai didi

java - 通过以太网电缆连接时获取 Android 设备 IPv4 地址

转载 作者:行者123 更新时间:2023-11-29 22:57:19 26 4
gpt4 key购买 nike

我正在开发一个将在 Android TV Box 上运行的 Android 应用程序,我的设备可以通过 WifiEthernet 电缆连接到网络。我需要获取设备 IPv4 地址,现在我可以在设备通过 Wifi 连接时获取地址,但在通过 连接时无法获取地址>以太网电缆。

我的最低 SDK 版本是 24,目前我控制我的应用程序将运行的设备,我的目标 Android 版本是 7.1 和 8.0。

当连接到 Wifi 时,我使用下面的代码获取设备 IPv4 地址,但我找不到用于 Ethernet 电缆的类似代码

WifiManager manager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = manager.getConnectionInfo();
int ipInt = wifiInfo.getIpAddress();
String ip = InetAddress.getByAddress(ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(ipInt).array()).getHostAddress();

我需要一种方法来检测我的设备是否通过 WifiEthernet 连接并正确获取 IPv4

最佳答案

public static String getIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
return inetAddress.getHostAddress();
}
}
}
} catch (SocketException ex) {
ex.printStackTrace();
}
return null;
}

编辑: 在 list 中添加 Internet 权限以使其工作:

<uses-permission android:name="android.permission.INTERNET" />

这对所有情况都有帮助。

关于java - 通过以太网电缆连接时获取 Android 设备 IPv4 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57286769/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com