设置Geofence地理围栏时出现GEOFENCE_NOT_AVAILABLE错误如何解决
问题原因与解决方案
GEOFENCE_NOT_AVAILABLE错误代表谷歌移动服务(GMS)的地理围栏能力当前不可用,你的核心功能代码逻辑没有问题,问题出在权限、设备配置、Manifest声明三个环节:
- 权限申请不全
- Android 10(API 29)及以上系统,地理围栏要求必须获取
ACCESS_BACKGROUND_LOCATION后台位置权限,你当前只申请了ACCESS_FINE_LOCATION精确定位权限,需要补充该权限的申请逻辑。 - Android 12(API 31)及以上系统,额外需要申请
ACTIVITY_RECOGNITION权限才能正常使用地理围栏功能。
- Android 10(API 29)及以上系统,地理围栏要求必须获取
- 设备配置不符合要求
- 地理围栏要求设备的位置服务必须开启高精度模式,如果仅开启了设备定位(仅GPS)或省电模式(仅网络定位),就会触发该错误。
- 设备必须安装正常运行的谷歌移动服务(GMS Core),无GMS、GMS版本过低、GMS被禁用都会触发该错误。
- Manifest配置缺失
- 你需要在AndroidManifest.xml中静态注册
GeofenceBroadcastReceiver,动态注册的广播在APP进程被杀死后无法收到地理围栏触发回调。 - 确认你已经在Manifest中正确声明了所有用到的权限、谷歌地图API密钥。
- 你需要在AndroidManifest.xml中静态注册
- 代码小瑕疵(不触发当前报错,仅影响功能)
Maps.java的addCircle方法中,circleOptions.strokeColor(4);属于参数错误,strokeColor方法需要传入颜色值,设置描边宽度应该调用circleOptions.strokeWidth(4)。
内容的提问来源于stack exchange,提问作者Carlos Melendez
相关产品推荐
相关产品推荐

