【问题标题】:How does ACCESS_BACKGROUND_LOCATION introduced in Android Q affect Geofence APIs?Android Q 中引入的 ACCESS_BACKGROUND_LOCATION 对地理围栏 API 有何影响?
【发布时间】:2019-09-06 09:12:02
【问题描述】:

为了使用地理围栏 API,用户 has to give 应用程序 ACCESS_FINE_LOCATION。这个位置被认为是危险的,可以随时撤销;一旦此权限被撤销,应用程序将无法请求地理围栏更新。

ACCESS_BACKGROUND_LOCATION 权限如何适合这张图片?我们确定这个权限也是dangerouscan be revoked at any time。是不是说,如果我们想注册一些IntentService,在每次地理围栏发生变化时调用,我们还必须确保用户已经提供了ACCESS_BACKGROUND_LOCATION 权限?或者,如果我们尝试在我们自己的后台 Service/BroadcastReceiver 中获取当前位置,我们是否需要使用此权限?

我问这个问题的原因是文档在这一点上似乎有点含糊:描述 Q Developer Preview 的文档提到地理围栏是后台位置检索的用例之一,而 @ 987654325@ 的要求中没有提到ACCESS_BACKGROUND_LOCATION

【问题讨论】:

    标签: android android-location android-geofence android-10.0


    【解决方案1】:

    Geofencing API Documentation 现已更新,如果我们针对 Android Q,我们需要定义 ACCESS_BACKGROUND_LOCATION 来监控地理围栏

    来自文档:

    要使用地理围栏,您的应用必须请求 ACCESS_FINE_LOCATION。如果您的应用面向 Android 10(API 级别 29)或更高版本,则您的应用还必须请求 ACCESS_BACKGROUND_LOCATION。

    【讨论】:

      【解决方案2】:

      我的部分“Re-register geofences only when required”:

      注册的地理围栏保存在 com.google.process.location 进程中,该进程由 com.google.android.gms 包拥有。

      这并不是真正需要的,因为com.google.process.location 应该是获取位置数据的那个(所以需要请求ACCESS_BACKGROUND_LOCATION 权限的那个)。

      话虽如此,遵循这个逻辑ACCESS_FINE_LOCATION 权限应该也不需要。需要它可能是因为两个原因(我不知道真正的原因):

      • 在注册地理围栏或接收通知位置时检查,
      • 或者 Google Play 服务会检查此权限,以禁止应用通过使用 Play 服务作为代理进程获取信息来规避缺少位置权限的情况。

      对我来说,第二个假设更有意义,这意味着即使应用程序在技术上不需要(获取位置的过程是 Play Service),出于隐私/安全原因,它也是必需的。

      按照这个逻辑,Google 应该(将?)也强制执行ACCESS_BACKGROUND_LOCATION,以确保用户的隐私/安全并减少电池消耗。

      【讨论】:

      • 是的,我的想法完全一样:一方面,与地理围栏相关的工作(需要权限)发生在单独的进程中,因此不需要后台位置权限;另一方面,ACCESS_FINE_LOCATION 权限是必需的。
      【解决方案3】:

      在 beta 4 中,在未授予 ACCESS_BACKGROUND_LOCATION 时添加地理围栏,即使应用程序完全处于前台,也会失败并显示状态代码 13(“错误”)。

      【讨论】:

        【解决方案4】:

        您需要 Android 10 API 级别 29+ 才能使用 ACCES_BACKGROUND_LOCATION

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-03-08
          • 1970-01-01
          • 2013-05-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多