首页 > 解决方案 > 有没有办法从 Android 应用程序中获取 Chromebook 的真实 IP?

问题描述

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

使用两者WifiManagerNetworkInterface.getNetworkInterfaces()我得到的只是虚拟IP。调用外部服务器是行不通的,因为这会让我获得公共 IP。

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

标签: androidgoogle-chrome-oschromebook

解决方案


这在ChromeOS.dev上有更详细的回答。

要获取分配给 Chrome OS 设备连接到的最高优先级网络的 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


推荐阅读