我在应用程序中使用了地理围栏,自从我开始使用它后,我开始使用 broadcastReceiver 进行转换,当我关闭 GPS 位置时,我收到了代码为 GEOFENCE_NOT_AVAILABLE 的警报,并且我启动了一项服务以在需要时重新注册地理围栏打开 GPS。 现在我休息了几天,当我关闭 GPS 时,我的 broadcastReceiver 突然没有收到警报。我不明白为什么? *当我进入/离开位置时(就像我在地理围栏初始化中定义的那样)我触发了警报,问题就在触发 GEOFENCE_NOT_AVAILABLE 警报时。
如果有人能帮助我,我会很高兴
最佳答案
对于在 Android 11(API 30,即使构建时针对 API 29 或更低版本)上运行应用程序时遇到此问题的任何人,确认这是预期行为,因为 Android 操作系统在启用位置服务时不再注销地理围栏关闭。
但是,当位置服务关闭时,您仍然无法注册地理围栏,因此必须检查它们的可用性,并在需要注册新服务时提示用户打开它们。之前注册过的不需要重新注册。
关于在运行 Android 10 或更早版本的设备上如何发生这种情况,目前还没有相关信息,一些开发者也报告了这一点。但可以肯定的是,至少在某些版本的 Android 操作系统(取决于设备制造商)中更早地引入了更改似乎是安全的。如果最初的问题提到这个问题是否仅在某些 API 上,那将非常有帮助,但我想由于它的年龄,它与 Android 11 无关。如果有人在较低的 API 上遇到过这个问题,可以测试他们是否旧的地理围栏仍然注册并可用,我很乐意相应地更新答案。
来源: https://issuetracker.google.com/issues/143967408
更新: 正如 Stephen Ruda 所提到的,它似乎不依赖于 Android 操作系统版本,而是依赖于 Google Play 服务版本。这使得这种行为完全不可预测。
关于android - 地理围栏 - 触发 'GEOFENCE_NOT_AVAILABLE' 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57413993/