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.
MainActivity.java
layout
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.
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.