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 中的位置更新的主要内容,如果未能解决你的问题,请参考以下文章