View video tutorial

ANDROID WiFi

ANDROID

Connecting to WiFi on Android involves managing various system services, permissions, and network specifications.

Android WiFi


➔ To manage WiFi in an Android application, specific permissions must be declared in AndroidManifest.xml.

➔ The modern approach to WiFi management in Android applications, versions (API 29+) prioritize the ConnectivityManager over the old deprecated WiFiManager for establishing new connections.

➔ To connect to a specific access point (AP), use a WifiNetworkSpecifier.

➔ To connect to a specific Wi-Fi network on Android 10 (API 29) and higher, the recommended approach is to use ConnectivityManager and WiFiNetworkSpecifier.

➔ From Android 10 (API level 29) and above, the WifiManager.setWifiEnabled() method has been deprecated due to security and privacy restrictions.

➔ The user needs to enable/disable Wi-Fi through the settings panel to manually toggle it.

WiFi Connections Implementation

➔ activity_main.xml file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="73dp"
        android:background="@color/white"
        android:textColor="@color/black"
        android:text="TextView" />
</LinearLayout>

➔ Permission in AndroidManifest.xml
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET" />

➔ Check IP Address of the device

MainActivity.java file.

import android.widget.TextView;
import android.widget.Toast;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity {
    TextView message;
    private WifiManager wifiManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
        message = (TextView) findViewById(R.id.textView1);
        wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
        //wifiManager.setWifiEnabled(true);
        try {
            String ip = Formatter.formatIpAddress(wifiManager.getConnectionInfo().getIpAddress());
            Toast.makeText(getApplicationContext(), "SUCCESSFULLY CONNECTED TO " + ip, Toast.LENGTH_SHORT).show();
            message.setText("\nSUCCESSFULLY CONNECTED TO " + ip);
        } catch (Exception e) {
            Toast.makeText(getApplicationContext(), "Turn ON WiFi on physical device", Toast.LENGTH_LONG).show();
        }
    }
}

➔ Output
android-spinner