处于打mode模式时,从RECEIVE_SMS BroadcastManager启动的前台服务中接收位置更新

时间:2018-10-15 17:10:53

标签: android android-service android-location android-gps android-doze

我正在尝试创建一个使用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)。

我该如何解决?我已在电池优化设置中将应用设置为“允许”,但似乎没有什么区别。

0 个答案:

没有答案