Get ssid of connected network and my IP address

Android example code to get ssid and IP address, using WifiInfo.

Tested on Samsung Galaxy A9, running Android 6.0.1.

Wifi enabled and connected

Wifi disabled

MainActivity.java
package com.blogspot.android_er.androidwireless;

import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.format.Formatter;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

TextView tvWifiEnabled, tvWifiState, tvWifiInfo, tvSSID,
tvRssi, tvIP, tvFormattedIP1, tvFormattedIP2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tvWifiEnabled = (TextView)findViewById(R.id.WifiEnabled);
tvWifiState = (TextView)findViewById(R.id.WifiState);
tvWifiInfo = (TextView)findViewById(R.id.WifiInfo);
tvSSID = (TextView)findViewById(R.id.SSID);
tvRssi = (TextView)findViewById(R.id.Rssi);
tvIP = (TextView)findViewById(R.id.IP);
tvFormattedIP1 = (TextView)findViewById(R.id.FormattedIP1);
tvFormattedIP2 = (TextView)findViewById(R.id.FormattedIP2);

//To prevent memory leaks on devices prior to Android N,
//retrieve WifiManager with
//getApplicationContext().getSystemService(Context.WIFI_SERVICE),
//instead of getSystemService(Context.WIFI_SERVICE)
WifiManager wifiManager =
(WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
tvWifiEnabled.setText("isWifiEnabled(): " + wifiManager.isWifiEnabled());
tvWifiState.setText(readtvWifiState(wifiManager));

WifiInfo wifiInfo = wifiManager.getConnectionInfo();
if(wifiInfo == null){
tvWifiInfo.setText("wifiInfo == null !!!");
}else{
tvWifiInfo.setText(wifiInfo.toString());
tvSSID.setText("SSID: " + wifiInfo.getSSID());
tvRssi.setText("Rssi: " + wifiInfo.getRssi() + " dBm");

int ipAddress = wifiInfo.getIpAddress();
/*
Formatter.formatIpAddress() was deprecated in API level 12.
This method does not support IPv6 addresses.
*/
String FormatedIpAddress = Formatter.formatIpAddress(ipAddress);
String FormatedIpAddress2 = String.format("%d.%d.%d.%d",
(ipAddress & 0xff),
(ipAddress >> 8 & 0xff),
(ipAddress >> 16 & 0xff),
(ipAddress >> 24 & 0xff));
tvIP.setText("IP: " + wifiInfo.getIpAddress());
tvFormattedIP1.setText("" + FormatedIpAddress);
tvFormattedIP2.setText("" + FormatedIpAddress2);
}

}

// "android.permission.ACCESS_WIFI_STATE" is needed
private String readtvWifiState(WifiManager wm){
String result = "";
switch (wm.getWifiState()){
case WifiManager.WIFI_STATE_DISABLED:
result = "WIFI_STATE_DISABLED";
break;
case WifiManager.WIFI_STATE_DISABLING:
result = "WIFI_STATE_DISABLING";
break;
case WifiManager.WIFI_STATE_ENABLED:
result = "WIFI_STATE_ENABLED";
break;
case WifiManager.WIFI_STATE_ENABLING:
result = "WIFI_STATE_ENABLING";
break;
case WifiManager.WIFI_STATE_UNKNOWN:
result = "WIFI_STATE_UNKNOWN";
break;
default:
}
return result;
}
}


layout
    xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.blogspot.android_er.androidwireless.MainActivity" >

android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:autoLink="web"
android:text="http://android-er.blogspot.com/"
android:textStyle="bold" />
android:id="@+id/WifiEnabled"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
android:id="@+id/WifiState"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
android:id="@+id/WifiInfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textStyle="italic"/>
android:id="@+id/SSID"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textColor="#FF0000"/>
android:id="@+id/Rssi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#00FF00"/>
android:id="@+id/comment1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="get IP Address:"/>
android:id="@+id/IP"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textStyle="italic"
android:textColor="#0000FF"/>
android:id="@+id/FormattedIP1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textStyle="italic"
android:textColor="#0000FF"/>
android:id="@+id/FormattedIP2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textStyle="italic"
android:textColor="#0000FF"/>




uses-permission of "android.permission.ACCESS_WIFI_STATE" is needed in AndroidManifest.xml.

Remark on MAC:
Please take a look on the captured screen; the MAC address is 02:00:00:00:00:00.

Refer to Android 6.0 Changes - Access to Hardware Identifier:
To provide users with greater data protection, starting in this release, Android removes programmatic access to the device’s local hardware identifier for apps using the Wi-Fi and Bluetooth APIs. The WifiInfo.getMacAddress() and the BluetoothAdapter.getAddress() methods now return a constant value of 02:00:00:00:00:00.

Popular posts from this blog

OnePlus Releases OxygenOS 4.5 OTA For OnePlus 3 and OnePlus 3T

Report: Incredibly Accurate GPS Chips are Coming to Smartphones Next Year

Black Friday saw the lowest price yet for the Roomba j7 from iRobot.