Android 11 中的位置更新

Posted

技术标签:

【中文标题】Android 11 中的位置更新【英文标题】:Location Updates in Android 11 【发布时间】:2020-10-10 11:24:24 【问题描述】:

我的应用会定期从后台开始跟踪前台服务中的位置更新,并在添加 android:foregroundServiceType="location" 后在 Android Q 中正常运行,但在 Android 11 测试版中它不再接收位置。

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

【问题讨论】:

您是否授予了ACCESS_BACKGROUND_LOCATION权限 @ShaluTD 没有,但前台服务不需要,现在是吗? 【参考方案1】:

从 Android 11 开始,前台“位置”服务不再足以获取后台位置更新。我们现在需要请求 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

【讨论】:

【参考方案2】:

目前,只有在前台服务正在运行且活动处于前台时,该应用才会获取位置更新。然后您可以将应用程序置于后台或关闭屏幕,它会不断获取位置更新。

如果应用程序进入后台后启动前台服务,例如通过广播接收器,则它不会获取位置更新。

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

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

【讨论】:

带有 START_STICKY 标志的前台服务怎么样?我的意思是从活动中启动前台服务。此服务在系统重新启动后是否仍然可以访问位置(例如由于内存不足)?

以上是关于Android 11 中的位置更新的主要内容,如果未能解决你的问题,请参考以下文章

由于位置许可,BLE 蓝牙扫描无法在 Android 10 和 11 上运行

Android:请求位置更新

Android 中的位置未更新

Google 地图 (Android) 中的位置更新率

Android 11:如何获取当前位置

Android 服务未收到位置更新