android - 地理围栏 - 触发 'GEOFENCE_NOT_AVAILABLE' 时出现问题

标签 android android-pendingintent geofencing android-gps android-geofence

我在应用程序中使用了地理围栏,自从我开始使用它后,我开始使用 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/

相关文章:

java - "Seekable"与 MediaRecorder Android 6.0 (API 23) 一起使用的文件描述符

android - 受信任的 Web Activity 是否可以占据屏幕的一部分,而其余屏幕则在后台显示该 Activity

android - 通过警报启动服务不起作用

android - Intent 返回错误的数据

ios - 低功耗模式下或禁用后台应用程序刷新的 GeoFence 行为

android - Xamarin.Android.D8.Target - "java.exe"在创建混淆器配置文件时以代码 1 退出

android - 如何在 android Activity 中使用 gradle.properties 中的属性?

android - PendingIntent.getBroadcast().send() 与 Context.sendBroadcast()

go - 检查纬度/经度点是否在区域内

android - 应用程序被杀死时地理围栏不起作用