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

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

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

【问题讨论】:

  • 您是否授予了ACCESS_BACKGROUND_LOCATION权限
  • @ShaluTD 没有,但前台服务不需要,现在是吗?

标签: android service location android-11


【解决方案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 标志的前台服务怎么样?我的意思是从活动中启动前台服务。此服务在系统重新启动后是否仍然可以访问位置(例如由于内存不足)?
    猜你喜欢
    • 1970-01-01
    • 2013-06-10
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多