Android 11 的位置更新

Location Updates in Android 11

我的应用程序跟踪前台服务中的位置更新,定期从后台启动,并且在添加 android:foregroundServiceType="location" 之后在 Android Q 中正常工作,但在 Android 11 beta 中它不再接收位置。

这种方式是 11 中的新方式还是只是一个错误?我在文档中没有看到任何内容。

目前,如果前台服务为 运行 并且 activity 处于前台,则该应用程序只会获取位置更新。然后您可以将应用程序置于后台或关闭屏幕,它会不断获取位置更新。

如果应用进入后台后启动前台服务,例如通过 BroadcastReceiver,则它不会获得位置更新。

作为解决方法,我们必须请求后台位置权限。

这似乎是 Android 11 的未决问题:https://issuetracker.google.com/issues/158814176

从 Android11 开始,前台“位置”服务不再足以获取后台位置更新。我们现在需要请求ACCESS_BACKGROUND_LOCATION,如果后台启动了前台服务(比如广播接收器):

https://developer.android.com/about/versions/oreo/background-location-limits

更糟糕的是,您必须与其他位置权限分开请求 ACCESS_BACKGROUND_LOCATION,否则将无法工作:

https://developer.android.com/about/versions/11/privacy/location