如何以编程方式在android中获取连接的wifi路由器的IP地址?

Posted

技术标签:

【中文标题】如何以编程方式在android中获取连接的wifi路由器的IP地址?【英文标题】:how to obtain the ip address of the connected wifi router in android programmatically? 【发布时间】:2012-08-13 15:29:58 【问题描述】:

我想获取我的android手机所连接的wifi路由器的IP地址?我知道我们可以通过android APIS获取mac/BSSId和SSID,但是我找不到找到它的ip地址的方法?

我找到了获取手机ip地址的代码,拥有wifi路由器

WifiManager myWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo myWifiInfo = myWifiManager.getConnectionInfo();
int ipAddress = myWifiInfo.getIpAddress();
System.out.println("WiFi address is " + android.text.format.Formatter.formatIpAddress(ipAddress))

但没能得到我想要的

【问题讨论】:

试试这个解决方案。 ***.com/a/6071963/735675 使用给定的代码你得到了什么?你想得到什么? 你添加权限了吗?我确定你的代码没有问题。 @paritybit 我想获取路由器的IP地址,这样我就可以连接到另一个连接到同一路由器的安卓手机 @Dya bro 这将给出android设备的IP地址..我想要它所连接的路由器的IP地址 【参考方案1】:

你可能想要的是DhcpInfo:

final WifiManager manager = (WifiManager) super.getSystemService(WIFI_SERVICE);
final DhcpInfo dhcp = manager.getDhcpInfo();
final String address = Formatter.formatIpAddress(dhcp.gateway);

这将生成(格式化的)网关 IP 地址,应该就是您要查找的地址。

【讨论】:

这是一个非常简单的解决方案,主要目标 - 它的工作原理。但很遗憾,它不支持 IPv6 它给了我本地 IP 地址【参考方案2】:

由于 formatIpAddress 已被弃用,这里是替代方案:

public String getHotspotAdress()
    final WifiManager manager = (WifiManager)super.getSystemService(WIFI_SERVICE);
    final DhcpInfo dhcp = manager.getDhcpInfo();
    int ipAddress = dhcp.gateway;
    ipAddress = (ByteOrder.nativeOrder().equals(ByteOrder.LITTLE_ENDIAN)) ?
            Integer.reverseBytes(ipAddress) : ipAddress;
    byte[] ipAddressByte = BigInteger.valueOf(ipAddress).toByteArray();
    try 
        InetAddress myAddr = InetAddress.getByAddress(ipAddressByte);
        return myAddr.getHostAddress();
     catch (UnknownHostException e) 
        // TODO Auto-generated catch block
        Log.e("Wifi Class", "Error getting Hotspot IP address ", e);
    
    return "null"

【讨论】:

以上是关于如何以编程方式在android中获取连接的wifi路由器的IP地址?的主要内容,如果未能解决你的问题,请参考以下文章

如何在同一网络上以编程方式获取其他支持Wifi的设备的IP地址?

Android:如何以编程方式启用/禁用 Wifi 或 Internet 连接

Android:如何以编程方式启用/禁用 Wifi 或 Internet 连接

如何以编程方式在 Android 中禁用 GSM 连接

如何在 Android 上以编程方式从 Mac 地址获取 IP 地址?

如何以编程方式在 Android Q 中打开设置面板?