仅在必要时重新注册地理围栏

6
根据Android地理围栏文档,如果发生以下情况,应重新注册地理围栏:
  • 设备重新启动。
解决方案:当添加地理围栏时,应将其存储在内部(SharedPreferences)中。然后监听设备的启动完成操作,并重新注册存储的地理围栏。
  • 应用程序已被卸载并重新安装。
解决方案:用户应重新创建地理围栏或远程存储它们,然后在首次打开应用程序时检索它们。
  • 应用程序数据已清除。
解决方案:用户应重新创建地理围栏或远程存储它们,然后在首次打开应用程序时检索它们。


但是,我不知道以下情况该怎么办,请你给予建议:

  • Google Play服务数据已清除。如何检测此情况?

  • 应用程序收到了GEOFENCE_NOT_AVAILABLE警报。这通常发生在NLP(Android的网络位置提供程序)被禁用后。不确定在哪里接收到此“警报”


不确定在哪里接收到这个“警报”:它将在您的服务中接收转换。您可以使用以下代码进行检查:GeofencingEvent geofencingEvent = GeofencingEvent.fromIntent(intent); if(geofencingEvent.getErrorCode() == GeofenceStatusCodes.GEOFENCE_NOT_AVAILABLE) - Sagar
请查看我对类似问题的回答,因为我认为它应该涵盖所有需要根据文档重新注册地理围栏的情况。 - Michael Krause
1个回答

0

我找不到检测Google Play服务数据被清除的方法,所以每次打开应用程序时我都会请求新的地理围栏。

正如@Sagar所提到的那样,在转换服务中收到GEOFENCE_NOT_AVAILABLE。当位置被禁用时会收到此消息。为了解决这个问题,我使用SharedPreferences保存地理围栏,并有一个广播接收器来检测位置何时再次启用。在此处重新加载保存的地理围栏。

谢谢。


LocationManager.PROVIDERS_CHANGED_ACTION 在 API 26 及更高版本上将无法使用 - 现在你该怎么办? :- https://dev59.com/TVYM5IYBdhLWcg3wlQ0i - Gunaseelan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接