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