Android Q-前台服务需要后台位置权限



本文档中的第一点指出,如果在应用程序处于前台启动Android 11时启动前台定位服务,则需要后台定位权限。

https://developer.android.com/guide/components/foreground-services#bg-访问限制

我的用例是用户点击按钮开始位置跟踪。点击该按钮会启动前台服务,并发出通知。现在,我希望该应用程序即使在后台也能继续跟踪。在安卓10之前,实现这一点不需要后台位置许可。

我的问题是,要支持Android 11,我是否也需要开始请求后台权限?此外,我需要为Android 10做同样的操作吗?在互联网上找不到任何其他参考资料来证实这一点。请告诉我你的想法。

根据后台工作的定义

只要满足以下条件,应用程序就被视为在后台运行:

  1. 用户当前看不到应用程序的任何活动
  2. 该应用程序没有运行任何前台服务,这些服务是在用户可以看到该应用程序中的活动时启动的

否则,应用程序将被视为在前台运行。

在您的情况下,当活动对用户可见时,您就进入了启动前台服务的第二点,因此从技术上讲,即使用户离开您的应用程序,在显示服务通知时,您的应用仍被视为处于前台。

如果您的目标是Android 10及以上版本,前台服务需要在其清单声明中包含android:foregroundServiceType="location"。请参见此处。

如果您在创建的前台服务中获取位置更新,则不一定需要ACCESS_BACKGROUND_LOCATION权限,因为从技术上讲,您在后台并没有访问位置。但是,在您的服务中,如果您使用任何可能需要后台位置权限的API,如地理围栏,则您将需要将后台权限添加到清单中,并相应地请求和处理该权限。

最新更新