Why does WiFi SSID restriction need the location permission?

Android has incrementally set up restrictions for apps which want to read the WiFi name (SSID), probably because the WiFi name/SSID can theoretically be used to determine your location. For example, imagine that you're in the WiFi "Berlin Public Transport" – apps which can read this information could track your location just based on the WiFi name. (Note that Google always tracks your location by default; however they seemingly don't want others to have these data, too.)

This is only required to restrict synchronization to specific WiFi networks. To restrict synchronization to WiFi networks in general, no permissions are needed.

Android 8

Android 8.0: According to the documentation, Android 8.0 should impose the same restrictions as Android 8.1. In practice it seems that the restrictions are introduced with Android 8.1.

Android 8.1 and newer requires apps which want to determine the active WiFi name (SSID) to have the (coarse) location permission.

  • Coarse location permission

Android 9

Android 9 and newer additionally require active location services ("GPS") to determine the SSID. This means that location services ("GPS") must be enabled when the sync is performed (= permanently).

  • Fine location permission
  • Enabled location services

Android 10

Android 10 and newer additionally require that location is available "all the time" / "in the background" (synchronization runs in background, so it needs the background location permission).

  • Fine location permission
  • Background location permission
  • Enabled location services

Android 11 and newer

Android 11 and newer make it more difficult for users to enable the background location permissions. At the same time, Google Play has started to reject apps which require background location permission at will.

  • Fine location permission
  • Background location permission
  • Enabled location services