Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detect wifi IP address on Android?

I need to determine if the Android device is connected to Wifi, and if so, obtain its Wifi IP address.

I know how to use ConnectivityManager to determine whether the active network is a Wifi network, and I know how to use java.net.NetworkInterface to iterate over the available network interfaces and get their IP addresses.

What I don't know how to do is determine which IP address belongs to the Wifi network, if there is more than one address found. Any advice?

Thanks.

like image 432
Frank LaRosa Avatar asked Nov 02 '11 03:11

Frank LaRosa


2 Answers

public String getIpAddr() {
   WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
   WifiInfo wifiInfo = wifiManager.getConnectionInfo();
   int ip = wifiInfo.getIpAddress();

   String ipString = String.format(
   "%d.%d.%d.%d",
   (ip & 0xff),
   (ip >> 8 & 0xff),
   (ip >> 16 & 0xff),
   (ip >> 24 & 0xff));

   return ipString;
}

Please Note: You need to add android.permission.INTERNET and android.permission.ACCESS_WIFI_STATE in your AndroidManifest.xml as <user-permission/> to access the code.

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
like image 90
Tanmay Mandal Avatar answered Sep 19 '22 22:09

Tanmay Mandal


Please try this code.

ConnectivityManager connec = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

//To fetch the state of the Wi-Fi network in the device
Boolean isWifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting(); 

WifiManager wifiMgr = (WifiManager) getBaseContext().getSystemService(Context.WIFI_SERVICE); 
WifiInfo wifiInfo = wifiMgr.getConnectionInfo(); 

//To fetch the name of the Wi-Fi network to which the device is connected
String wifiName = wifiInfo.getSSID(); 
like image 35
Kannan Suresh Avatar answered Sep 18 '22 22:09

Kannan Suresh