Я пытаюсь создать приложение, которое использует 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
).
Как сделатьЯ работаю над этим?Я установил приложение «Разрешить» в настройках оптимизации батареи, но, похоже, это не имеет значения.