我正在尝试创建一个使用RECEIVE_SMS
BroadcastReceiver
的应用程序,以对某些传入的SMS消息启动前台服务,在前台服务中接收位置更新几分钟,然后发送回复短信。
我正在使用LocationManager
通过致电
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, mGPSLocationListener);
一切正常,但是如果我使用adb shell dumpsys deviceidle force-idle
强制设备进入深度空闲模式,则会停止接收位置更新。
设备接收到SMS,调用了我的BroadcastReceiver
的{{1}}方法,启动了前台服务,但是从未调用onReceive()
。我猜系统定位服务没有被“激活”,因为该设备处于深度空闲状态,即使mGPSLocationListener.onLocationChanged()
返回一个getSystemService(Context.LOCATION_SERVICE)
实例(即它不返回LocationManager
)。>
我该如何解决?我已在电池优化设置中将应用设置为“允许”,但似乎没有什么区别。