Search code examples
androidwififoreground-servicessid

Is it possible to get the wifi ssid in the background service?


I'm trying to get the wifi ssid in the background.
While it is in the foreground, it works well.
But when it is going to background, in my foreground service, it returns .
Of course, it obtains Location permission.
Is it possible to get the ssid in that service?

    ConnectivityManager connManager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    if (ConnectivityManager.TYPE_WIFI == netInfo.getType ()) {
        WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
        WifiInfo wifiInfo = wifiManager.getConnectionInfo();
        Log.d("checkWifi", "checkWifi" + wifiInfo.getSSID());
    }
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

Solution

  • It needs ACCESS_BACKGROUND_LOCATION permission on Android 10+

    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
    

    Thank you @CommonsWare!