'Android API 31, how to get the SSID?

Manifest (permissions declared and granted)

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

Main class

class MainActivity {
    val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    val networkInfo = connectivityManager.activeNetwork
    val capabilities = connectivityManager.getNetworkCapabilities(networkInfo)
    if (capabilities?.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) == true) {
        val wifiInfo = capabilities.transportInfo as WifiInfo
        Log.d("DEBUG", "ssid: ${wifiInfo.ssid}")
    }

    val wifiManager = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
    val connectionInfo = wifiManager.connectionInfo
    Log.d("DEBUG", "ssid (deprecated) ${connectionInfo.ssid}")
}

output

ssid: <unknown ssid>
ssid (deprecated): "bingo"

How to retrieve the SSID while targeting the latest API and use the latest, non deprecated functions?



Solution 1:[1]

You need to enable the device's location.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 mariaiffonseca