How to know ip address of the router from code in android?
Asked Answered
P

4

8

How can you find the IP address of the router (gateway address) from code?

WifiInfo.getIpAddress() - returns IP address of device.

In a shell command "ipconfig" does not return any value.

Here is my solution, but please let me know if there is a better way to do this:

WifiManager manager = (WifiManager)getSystemService(WIFI_SERVICE);
DhcpInfo info = manager.getDhcpInfo();
info.gateway;
Pint answered 27/1, 2012 at 15:32 Comment(5)
Normally, the IP address of "the router" is not something you know. It's also not very well-defined, do you mean your default gateway?Unhouse
yes, i want gateway. In ubuntu i find it: route -nPint
possible duplicate of [How to get gateway and subnet mask details in Android? programmatically ](#5387536)Catha
ipconfig is a windows command. The linux command is ifconfig with an F. Android doesn't seem to this either and uses netcfgCatha
Of course, I mean ifconfig. netcfg return ip of device:(Pint
M
15

Hey this might help you: DHCPInfo

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

Add following rows to AndroidManifest.xml in order to access wifi functionalities:

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

As the formatIpAddress is deprecated now you can use below code

byte[] myIPAddress = BigInteger.valueOf(manager.getIpAddress()).toByteArray();
ArrayUtils.reverse(myIPAddress);
InetAddress myInetIP = InetAddress.getByAddress(myIPAddress);
String myIP = myInetIP.getHostAddress();
Matriculation answered 23/5, 2013 at 11:8 Comment(2)
What if I have given Static IP & disabled DHCP, in that case I am getting 0.0.0.0 for (dhcp.serverAddress).Romansh
Formatter.formatIpAddress() has been deprecated.Stagg
P
2

I think the way you're doing it is the best (AFAIK), here's some example code from a Cordova plugin that does it the same way:

public class GetRouterIPAddress extends CordovaPlugin {

    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        try {
            String ip = getRouterIPAddress();
            if (ip.equals("0.0.0.0")) {
                callbackContext.error("No valid IP address");
                return false;
            }
            callbackContext.success(ip);
            return true;
        } catch(Exception e) {
            callbackContext.error("Error while retrieving the IP address. " + e.getMessage());
            return false;
        }
    }

    private String formatIP(int ip) {
        return String.format(
            "%d.%d.%d.%d",
            (ip & 0xff),
            (ip >> 8 & 0xff),
            (ip >> 16 & 0xff),
            (ip >> 24 & 0xff)
        );
    }

    private String getRouterIPAddress() {
        WifiManager wifiManager = (WifiManager) cordova.getActivity().getSystemService(Context.WIFI_SERVICE);
        DhcpInfo dhcp = wifiManager.getDhcpInfo();
        int ip = dhcp.gateway;
        return formatIP(ip);
    }
}

https://github.com/vallieres/cordova-plugin-get-router-ip-address/blob/master/src/android/GetRouterIPAddress.java

Prim answered 15/2, 2018 at 23:8 Comment(0)
B
-2

Try this:

$ busybox ip route show

It worked fine in my tablet with Terminal Emulator!

Buckskin answered 24/10, 2013 at 21:18 Comment(1)
busybox is only available on rooted AndroidsFortnightly
G
-4

To get the IP address, try getInetAddress();

Gusty answered 20/8, 2013 at 9:50 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.