关闭 "Allow background activity" 设置停止前台服务中的位置更新

Turned off "Allow background activity" setting stops location updates in foreground service

我有一个前台服务请求位置更新并用它们做一些事情。 当应用程序不在屏幕上时,它仍然可以工作,因为该服务有一个持续的通知。

但是至少在我的三星设备上有一个电池设置,称为 “允许背景 activity”。 我没有注意它,因为它说 'background',据我所知,只要我有一个持续通知的前台服务,我的应用程序就会被 android 视为在前台,而且从不在后台。

但我注意到,如果关闭该设置,我的持续通知仍然存在,但 gps 图标消失并且位置更新停止。

这是正常行为还是我做错了什么?我的应用程序不应该被视为在前台吗?

如果这是正常行为,我现在知道我可以使用 isBackgroundRestricted() 检测此状态,并且我可以使用它来通知用户他们需要改变它。 另一个问题是,有没有办法以编程方式打开用户应该进行此更改的确切设置页面?

谢谢!

我有一个类似的问题。简短的回答是我不认为有进入确切屏幕的意图,但您可以使用 android.provider.Settings.ACTION_APPLICATION_SETTINGS.

让用户到达那里