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
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    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" >
    <TextView
        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" />
    <TextView
        android:id="@+id/WifiEnabled"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/WifiState"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/WifiInfo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="italic"/>
    <TextView
        android:id="@+id/SSID"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:textColor="#FF0000"/>
    <TextView
        android:id="@+id/Rssi"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#00FF00"/>
    <TextView
        android:id="@+id/comment1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:text="get IP Address:"/>
    <TextView
        android:id="@+id/IP"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="italic"
        android:textColor="#0000FF"/>
    <TextView
        android:id="@+id/FormattedIP1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="italic"
        android:textColor="#0000FF"/>
    <TextView
        android:id="@+id/FormattedIP2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="italic"
        android:textColor="#0000FF"/>
</LinearLayout>
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.
 
2 comments:
Thanks for sharing the code!
Thank you very much for sharing this code, Congratulations!
Post a Comment