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

Posted

技术标签:

【中文标题】Android Q - 前台服务需要后台位置权限?【英文标题】:Android Q - Background Location Permission needed for Foreground service? 【发布时间】:2021-06-11 16:28:52 【问题描述】:

本文档的第一点说,如果在 android 11 开始时应用处于前台时启动前台位置服务,则需要后台位置权限。

https://developer.android.com/guide/components/foreground-services#bg-access-restrictions

我的用例是用户点击按钮开始位置跟踪。点击该按钮会启动一个前台服务,该服务会发出通知。现在,我希望应用程序即使在后台运行后也能继续跟踪。 在 Android 10 之前,不需要后台位置权限即可完成此操作。

我的问题是,要支持 Android 11,我是否也需要开始请求后台权限?另外,我需要为 Android 10 做同样的事情吗?没有在互联网上找到任何其他参考来验证这一点。请让我知道你的想法。

【问题讨论】:

【参考方案1】:

根据the definition of background work

只要满足以下每个条件,应用就被认为在后台运行:

    用户当前看不到任何应用活动。 该应用未运行任何在用户可见该应用的活动时启动的前台服务。

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

在您的情况下,您适合在用户可见活动时启动前台服务的第二点,因此从技术上讲,即使用户在显示服务通知时您的应用仍被视为处于前台导航离开您的应用。

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

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

【讨论】:

以上是关于Android Q - 前台服务需要后台位置权限?的主要内容,如果未能解决你的问题,请参考以下文章

Android - 前台和后台服务有啥区别?

如何请求后台位置权限,但在 iOS / React Native 中回退到何时使用权限?

当应用程序切换到后台时,我的 android 位置服务被终止

只能从前台访问位置,但谷歌说我使用后台

如果在后台使用位置,更新到 Android 11 是不是需要应用显示另一个位置权限对话框?

Android实例-程序切换到后台及从后台切换到前台