有什么办法可以从 Android 应用程序中获取 Chromebook 的真实 IP?

问题描述

我有一个 Android 应用需要设备的真实 IP,而不是虚拟网络 IP。除非 Chromebook 在公共 IP 上,否则我不想要公共 IP,我只需要 LAN 的私有 IP,但现在我得到了一个虚拟 IP,我猜是 Android 的虚拟网络应用。

同时使用 WifiManagerNetworkInterface.getNetworkInterfaces() 我得到的只是虚拟 IP。调用外部服务器将不起作用,因为这会为我获取公共 IP。

我知道过去有人问过这个问题,但我只是想看看是否有人找到了方法

解决方法

ChromeOS.dev 中有更详细的回答。

要获取分配给 Chrome 操作系统设备所连接的最高优先级网络的 IPv4 地址,请检查 android 系统属性 arc.net.ipv4.host_address,如果需要,检查 arc.net.ipv4.host_gateway。一种方法是:

fun getChromeOsIpAddress() : String {
   val process = ProcessBuilder().command("/system/bin/getprop","arc.net.ipv4.host_address").start()
   val ipAddress = readInput(process.inputStream)
   return ipAddress
}

fun getChromeOsIpGateway() : String {
   val process = ProcessBuilder().command("/system/bin/getprop","arc.net.ipv4.host_gateway").start()
   val gatewayAddress = readInput(process.inputStream)
   return gatewayAddress
}

本文已获得 Apache 2.0 许可。

https://developers.google.com/open-source/devplat