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

如何以编程方式获取android中已连接wifi路由器的ip地址?,android,eclipse,ip-address,android-wifi,wifimanager,Android,Eclipse,Ip Address,Android Wifi,Wifimanager,我想获取我的android手机所连接的wifi路由器的ip地址?我知道我们可以通过使用android API获得mac/BSSId和SSID,但我没有找到找到它的ip地址的方法 我找到了获取手机无线路由器ip地址的代码 WifiManager myWifiManager = (WifiManager) getSystemService(WIFI_SERVICE); WifiInfo myWifiInfo = myWifiManager.getConnectionInfo(); int ipAdd

我想获取我的android手机所连接的wifi路由器的ip地址?我知道我们可以通过使用android API获得mac/BSSId和SSID,但我没有找到找到它的ip地址的方法

我找到了获取手机无线路由器ip地址的代码

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))
但未能得到我想要的

您可能想要的是:


这将产生(格式化的)网关IP地址,这应该是您正在寻找的地址。

由于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"
}

试试这个解决方案。使用给定的代码你得到了什么?你想得到什么?你添加权限了吗?我确信你的代码中没有问题。@paritybit我想得到路由器的ip地址,这样我就可以连接到另一部连接到同一个路由器的android手机router@Dyabro这将给出android设备的ip地址。我想要它所在路由器的ip地址连接这是一个非常简单的解决方案,也是它的主要目标——它是有效的。但不幸的是,它不支持IPv6its,因为它提供了本地ip地址
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"
}