Android API 31, how to get the SSID?

Viewed 399

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?

1 Answers

You need to enable the device's location.

Related