在前台服务中的位置,具有后台权限 VS 仅在应用程序中权限 Android Q

Posted

技术标签:

【中文标题】在前台服务中的位置,具有后台权限 VS 仅在应用程序中权限 Android Q【英文标题】:Location in Foreground service with Background permission VS in app only permissions Android Q 【发布时间】:2019-12-14 02:09:17 【问题描述】:

我正在验证我的位置服务与 android Q 的兼容性,但我有点不确定我的应用会如何反应,因为在我的测试中,我发现授予后台权限与仅在应用运行时没有区别。

从 Q 迁移文档中得出此声明

一个应用被认为是在后台,除非它的一个 活动可见或应用正在运行前台服务。

由于位置服务是前台服务,在这种情况下权限差异是否重要?

【问题讨论】:

【参考方案1】:

这是一个有点棘手的问题。

在 Q 上运行位置前台服务时,您需要“在应用程序运行时”权限 + 在清单中声明此前台服务属于位置类型。您的应用不需要后台权限。

如果您的应用确实要求后台权限,用户可能会怀疑并拒绝任何位置权限:(因此不建议向用户询问您不需要的权限。

强烈推荐观看来自 google IO 的视频:Updating Your Apps for Location Permission Changes in Android Q (Google I/O'19)

您可以在此处阅读有关 t 的更多信息:documantation

您可以在 GitHub 上查看 google 示例项目,以在此处使用前台服务在 Q 上进行位置更新:LocationUpdatesForegroundService

【讨论】:

【参考方案2】:

您只需要运行前台服务而不是后台。否则,当前台没有活动时,您的应用将在后台服务启动期间崩溃

【讨论】:

请提供更多详细信息。我个人更好地帮助了@Hadas 的答案。 developer.android.com/reference/android/app/…

以上是关于在前台服务中的位置,具有后台权限 VS 仅在应用程序中权限 Android Q的主要内容,如果未能解决你的问题,请参考以下文章

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

Android 11后台位置权限“仅在使用应用程序时允许”不授予权限

旧服务 vs 后台服务 vs 前台服务

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

如何在 React Native 中运行后台任务?

应用程序在后台时的 NSURLConnection