В Android 10 добавлена возможность запретить получение данных локации, когда приложение работает в бэкграунде.

Для реализации этой функциональности в Android API v29 добавлен новый permission ACCESS_BACKGROUND_LOCATION, который влияет только на запросы локации в бэкграунде. Запрос локации считается сделанным не из бэкраунда, в двух случаях:

1. Активити приложения видна пользователю, т.е. находится в состоянии started;

2. Запущен foreground service, у которого атрибут foregroundServiceType имеет значение location.

ACCESS_BACKGROUND_LOCATION – это runtime permission. При запросе этого разрешения пользователь видит диалог, изображенный на скриншоте.

Если запрашивать только стандартные разрешения ACCESS_FINE_LOCATION или ACCESS_COARSE_LOCATION, то диалог не будет иметь опцию «Allow all the time».