我在使用onAddGeofencesResult(int statusCode, String[] geofenceRequestIds)
的statusCode = 1000
回调中收到错误。
我启用了GPS和WiFi。我也有Google Play服务,我可以跟踪我的位置并请求更新。为什么我无法添加地理围栏?我甚至无法从文档示例应用程序添加地理围栏。我收到以下Toast消息:
“添加地理栅栏:失败,错误代码1000 GeofenceRequestIds = [1,2,1,2]”
从文档(statusCode 1000):
public static final int GEOFENCE_NOT_AVAILABLE
地理围栏服务现在不可用。通常这是因为用户在设置>位置访问中关闭了位置访问权限。
常数值:1000(0x000003e8)
当用户在“设置” - >“位置 - >模式”中不同意“使用Google”位置服务时,您会获得GEOFENCE_NOT_AVAILABLE
(代码为“1000”):
要解决这个问题:
当我试图在模拟器上运行这个应用程序时,我得到了statusCode 1000。解决这个问题的方法是进入Settings-> locations和access->检查模拟器上的enable wifi和gps选项,它会修复它
稍晚一点,但刚才我有这个问题。我的猜测是:
你在测试中使用任何类型的假GPS(Lockito,模拟器等)?
我花了几个小时才发现假位置似乎禁用了Geofence支持!如果您不在真正的位置,则无法注册或触发地理围栏。
如果您关闭假GPS,Geofence支持将再次启用。
由于Android中的设置已经发生了很大变化,因此发布此答案。当我运行运行API 28的Nexus 5X仿真器时,我遇到了这个错误两次。我设法通过执行以下操作来解决它:
在我采取这些步骤后,再次打开您的应用程序并添加地理围栏。
编辑:几个月后我再次遇到这个问题,有时模拟器很顽固,实际上并没有正确打开位置准确性,以允许谷歌的Geofence API识别它被打开。在定位精度有效之前,我已经开启和关闭了“提高定位精度”至少10次。
您实际上在您的问题中给出了答案:地理围栏服务现在不可用。通常这是因为用户在设置>位置访问中关闭了位置访问权限。
我有同样的问题,只是去设置 - >位置,并确保我选择高精度模式解决了这个问题。
PS Device only模式不够好,需要高精度模式。
希望这可以帮助。
首先,您的手机必须兼容:A compatible Android device that runs Android 2.2 or higher and includes Google Play Store.
可以肯定的是,您需要拥有Google Play服务installed correctly。
有时,只需重新启动手机即可解决此问题。
希望这有帮助。