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

Location in Foreground service with Background permission VS in app only permissions Android Q

我正在验证我的位置服务与 Android Q 的兼容性,但我有点不确定我的应用程序将如何反应,因为在我的测试中,我发现在授予后台权限时与仅在应用程序处于运行状态时没有区别运行.

此声明来自 Q 迁移文档

An app is considered to be in the background unless one of its activities is visible or the app is running a foreground service.

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

您只需要 运行 前台服务而不是后台服务。否则当前台没有 activity

时,您的应用程序将在后台服务启动期间崩溃

这个问题有点棘手。

当 Q 上的 运行 位置前台服务需要 "while app running" 权限 + 在清单中声明此前台服务的类型为位置。您的应用不需要后台权限。

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

强烈建议从 google IO 观看此视频:更新您的应用以应对 Android Q 中的位置权限更改(Google I/O '19)

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

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