Получать обновления местоположения в сервисе переднего плана, запущенном из RECEIVE_SMS BroadcastManager в режиме ожидания - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь создать приложение, которое использует RECEIVE_SMS BroadcastReceiver для запуска службы переднего плана для определенных входящих SMS-сообщений, получения обновлений местоположения в службе переднего плана в течение нескольких минут, а затем для отправки ответного SMS-сообщения обратно.

Я использую LocationManager для получения обновлений местоположения каждую секунду в течение двух минут, звоня по телефону

mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, mGPSLocationListener);

Все работает нормально, но если я принудительно переключаю устройство в режим глубокого простоя, используяadb shell dumpsys deviceidle force-idle, я прекращаю получать обновления местоположения.

SMS получено устройством, вызван мой метод BroadcastReceiver onReceive(), запущена служба переднего плана, но mGPSLocationListener.onLocationChanged() никогда не вызывается.Я предполагаю, что служба определения местоположения системы не "активирована", потому что устройство находится в состоянии глубокого простоя, даже если getSystemService(Context.LOCATION_SERVICE) возвращает экземпляр LocationManager (т.е. он не возвращает null).

Как сделатьЯ работаю над этим?Я установил приложение «Разрешить» в настройках оптимизации батареи, но, похоже, это не имеет значения.

...