I am getting an error in the onAddGeofencesResult(int statusCode, String[] geofenceRequestIds) callback with statusCode = 1000.

I have my GPS enabled and my WiFi. I also have Google Play Services and I am able to track my location and request updates. Why am I not able to add geofences? I am not able to add geofences even from the documentation sample app. I get the following Toast message:

"Add Geofences: Failure, error code 1000 GeofenceRequestIds=[1,2,1,2]"

From the documentation (statusCode 1000):

public static final int GEOFENCE_NOT_AVAILABLE

Geofence service is not available now. Typically this is because the user turned off location access in settings > location access.

Constant Value: 1000 (0x000003e8)


Solution 1:

You get GEOFENCE_NOT_AVAILABLE (code '1000') when user disagrees to "Use Google' location services" in Settings->Location->Mode: enter image description here

To fix it:

  • go to Settings->Location->Mode
    enter image description here
  • set "Device only (Use GPS to determine your location)"
  • set any other option to get the popup (e.g. "High accuracy (Use GPS, Wi-Fi and mobile networks to determine location")
  • dialog ""Use Google' location services" is shown
  • choose "Agree"

Solution 2:

Posting this answer since the settings in Android have changed a lot. I had this error twice when I was running a Nexus 5X emulator running API 28. I managed to solve it both times by doing the following:

  1. Turn off your application you are developing (don't let it be in the background)
  2. Go to Settings -> Security & Location -> Location -> Advanced -> Google Location Accuracy. Turn 'Improve Location Accuracy' off.

enter image description here

  1. Turn on 'Improve Location Accuracy'

Turn on your application again and adding geofences worked for me after I took these steps.

EDIT: I ran into this issue again a few months later, sometimes the emulator is stubborn and does not actually turn on location accuracy correctly to allow Google's Geofence API to recognise it is turned on. I had turn 'Improve Location Accuracy' on and off at least 10 times before location accuracy worked.