【发布时间】:2021-11-23 12:17:05
【问题描述】:
我的代码:
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
builder.addLocationRequest(new LocationRequest().setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY));
builder.setAlwaysShow(true);
mLocationSettingsRequest = builder.build();
mSettingsClient = LocationServices.getSettingsClient(MainActivity.this);
mSettingsClient
.checkLocationSettings(mLocationSettingsRequest)
.addOnSuccessListener(new OnSuccessListener<LocationSettingsResponse>() {
@Override
public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
//Success Perform Task Here
Log.d("MyApp", "OK!" + Double.toString(latitude));
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
int statusCode = ((ApiException) e).getStatusCode();
Log.e("MyApp","Failure ."+ Integer.toString(statusCode));
switch (statusCode) {
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
try {
ResolvableApiException rae = (ResolvableApiException) e;
rae.startResolutionForResult(MainActivity.this, REQUEST_CHECK_SETTINGS);
} catch (IntentSender.SendIntentException sie) {
Log.e("MyApp","Unable to execute request.");
}
break;
case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
Log.e("MyApp","Location settings are inadequate, and cannot be fixed here. Fix in Settings.");
}
}
})
.addOnCanceledListener(new OnCanceledListener() {
@Override
public void onCanceled() {
Log.e("GPS","checkLocationSettings -> onCanceled");
}
});
所以这段代码会弹出位置启用提示(就像在地图中一样)。问题是在弹出对话框后,已经调用了 OnFailureListener。甚至在我点击确定或取消之前。
错误日志:
失败.6
知道为什么吗?
编辑为了明确我的问题:
为什么在弹出对话框之后,就已经调用了OnFailureListener。甚至在我单击“确定”或“取消”之前。为什么会这样?我的印象是 onsuccess/onfailurelistener 应该只在我点击 Ok 或 Cancel 之后被调用。如果我错了,那么我如何在单击确定或取消后获得响应?
谢谢
【问题讨论】: