【发布时间】:2020-02-06 09:39:09
【问题描述】:
我在我的应用程序中使用LocationServices。在使用位置服务之前,我试图验证具有所需设置的位置是否已打开,但我面临的问题是SettingsClient.checkSettings 总是failing。请看我的LocationRequest 和LocationSettingRequest builder:
位置请求
mLocationRequest = LocationRequest()
mLocationRequest.interval = interval
mLocationRequest.fastestInterval = interval
Log.v(TAG, "distance => $distance")
if(distance > 0) {
mLocationRequest.smallestDisplacement = distance
}
mLocationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY
buildLocationSettingsRequest()
LocationSettingRequestBuilder
private fun buildLocationSettingsRequest() {
val builder = LocationSettingsRequest.Builder()
builder.addLocationRequest(mLocationRequest)
mLocationSettingsRequest = builder.build()
mSettingsClientInit = true
}
我请求checkSettings as
mSettingsClient.checkLocationSettings(mLocationSettingsRequest)
.addOnSuccessListener(this, object : OnSuccessListener<LocationSettingsResponse> {
override fun onSuccess(locationSettingsResponse: LocationSettingsResponse) {
Log.i(TAG, "LocationManager: All location settings are satisfied.");
mLocationCallback?.let {
fusedLocationClient?.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.myLooper());
}
// updateUI();
}
})
.addOnFailureListener(this, object : OnFailureListener {
override fun onFailure(e: Exception) {
Log.v(TAG, "Request PErmission failure");
var statusCode = (e as ApiException).getStatusCode()
when (statusCode) {
LocationSettingsStatusCodes.RESOLUTION_REQUIRED -> {
try {
// Show the dialog by calling startResolutionForResult(), and check the
// result in onActivityResult().
var rae = e as ResolvableApiException;
rae.startResolutionForResult(this@BaseLocationActivity, REQUEST_CHECK_SETTINGS);
} catch (sie: IntentSender.SendIntentException) {
Log.v(TAG, "PendingIntent unable to execute request.");
}
}
LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE -> {
mRequestingLocationUpdates = false;
Log.v(TAG, "Settings change unavailable.");
}
}
}
}
)
它总是产生onFailure 的addOnFailureListener。谁能帮我解决问题?此设置对话框显示确定以启用设置,我按确定,再次出现带有 onFailure 回调的相同对话框。
它发生在某些设备上,而不是所有设备上。
【问题讨论】:
-
您是否尝试了与
PRIORITY_HIGH_ACCURACY(see) 不同的优先级? -
不,即使设备处于高精度模式,即 Enable providers are Network and GPS ,这个 checkLocationSettings 仍然返回失败
-
@Mustansar Saeed 参考 dis ``` stackoverflow.com/a/10311891/12273964 ``
标签: android kotlin google-play-services android-location