我在使用onAddGeofencesResult(int statusCode, String[] geofenceRequestIds)
的{{1}}回调中收到错误。
我启用了GPS和WiFi。我也有Google Play服务,我可以跟踪我的位置并请求更新。为什么我无法添加地理围栏?我甚至无法从文档示例应用程序添加地理围栏。我收到以下Toast消息:
“添加Geofences:失败,错误代码1000 GeofenceRequestIds = [1,2,1,2]”
从文档(statusCode 1000):
statusCode = 1000
现在无法使用地理围栏服务。通常,这是因为用户在设置中关闭了位置访问>位置访问。
常数值:1000(0x000003e8)
答案 0 :(得分:33)
当用户不同意"使用Google'时,您会收到GEOFENCE_NOT_AVAILABLE
(代码' 1000')定位服务"在设置 - >位置 - >模式:
修复它:
答案 1 :(得分:5)
当我尝试在模拟器上运行此应用程序时,我获得了statusCode 1000。解决这个问题的方法是进入设置 - >位置和访问 - >检查模拟器上的enable wifi和gps选项,它将修复它
答案 2 :(得分:5)
稍晚一点,但刚才我遇到了这个问题。我的猜测是:
您在测试中使用任何类型的假GPS(Lockito,模拟器等)?
我花了几个小时才发现虚假地点似乎禁用了Geofence支持!如果你不在真正的位置,你就无法注册或触发地理围栏。
如果您关闭假GPS,Geofence支持将再次启用。
答案 3 :(得分:2)
你实际上在你的问题中给出了答案: 地理围栏服务现在不可用。通常,这是因为用户在设置中关闭了位置访问>位置访问。
我有同样的问题,只是去设置 - >位置并确保我选择高精度模式解决了这个问题。
PS Device only模式不够好,需要高精度模式。
希望这有帮助。
答案 4 :(得分:1)
首先,您的手机必须兼容:
A compatible Android device that runs Android 2.2 or higher and includes Google Play Store.
为确保您需要使用Google Play服务installed correctly。
有时,只需重新启动手机即可解决此问题。
希望得到这个帮助。
答案 5 :(得分:1)
答案 6 :(得分:1)
发布此答案,因为Android中的设置已发生很大变化。在运行运行API 28的Nexus 5X模拟器时,我两次遇到此错误。通过以下操作,我设法两次解决了该错误:
在执行了这些步骤之后,再次打开您的应用程序并添加地理围栏对我有用。
答案 7 :(得分:0)
对于我的targetSdkVersion 28和minSdkVersion 24,这对运行Pixel XL API 27的模拟器非常有用:
我在High accuracy
中选择了Settings -> Location -> Mode
。最初将其设置为Device only
。
这会弹出一条带有Agree
和Disagree
选项的消息。我选择了Agree
。
此后错误消失了。
我尝试了另一个选项Battery Saving
。这也很好。
但是当恢复为Device only
时,它再次开始出现此错误。
因此,在模拟器Location mode
的情况下,应该将其设置为High accuracy
或Battery saving
。
在我的实际设备(即Nexus 6P设备)上,该设备已经设置为High accuracy
,并且我没有检查它是否为Device only
。
答案 8 :(得分:0)
点击此官方链接进行地理围栏广播。
”,请确保在调用之后,在mainActivity的 onStart 中调用 Geofence.Builder 和 geofencingClient.addGeofences 方法> googleApiClient.connect()。”
最后,如果您在设置中设置了位置模式,即仅GPS或wifi 。您将收到此错误。(如果您正在使用模拟器) 选择高精度模式,您将可以添加地理围栏。 希望这可以帮助。祝你好运。
答案 9 :(得分:0)
在Android 9.0中: 我读了Ministry of Chaps的答案,并尝试了一个小时,但对我没有用。因此,我关闭了我的应用程序,关闭了“改善位置准确性”,关闭了“扫描”>“ wi-fi扫描”和“蓝牙扫描”,并且我也关闭了“用户位置”。之后,我打开所有这些选项,我的地理围栏终于开始工作了
答案 10 :(得分:0)
当未启用位置服务时,也会发生此错误。您需要将其设置为启用。
答案 11 :(得分:0)
对于 android oreo 到 android S 确保访问设置高优先级
fun ceksetting(){
val builder = LocationSettingsRequest.Builder()
.addLocationRequest(locationRequest)
val locationRequest = LocationRequest()
locationRequest!!.interval = 50000
locationRequest!!.fastestInterval = 50000
locationRequest!!.smallestDisplacement = 170f // 170 m = 0.1 mile
locationRequest!!.priority = LocationRequest.PRIORITY_HIGH_ACCURACY //set according to your app function
val client: SettingsClient = LocationServices.getSettingsClient(requireActivity())
val task: Task<LocationSettingsResponse> = client.checkLocationSettings(builder.build())
task.addOnSuccessListener { locationSettingsResponse ->
//here call your geofence
}
task.addOnFailureListener { exception ->
if (exception is ResolvableApiException){
// Location settings are not satisfied, but this can be fixed
// by showing the user a dialog.
try {
// Show the dialog by calling startResolutionForResult(),
// and check the result in onActivityResult().
exception.startResolutionForResult(requireActivity(),
REQUEST_CHECK_SETTINGS)
} catch (sendEx: IntentSender.SendIntentException) {
// Ignore the error.
}
}
}
}