Обновление для Google Play Services v7.0 + и на основе этого примера для LocationUpdates в Android, у меня есть следующий код для подключения к LocationServices.SettingsApi
и проверьте, есть ли у пользователя все в порядке, чтобы приложение получало обновления местоположения.
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
builder.addLocationRequest(mLocationRequest);
mLocationSettingsRequest = builder.build();
PendingResult<LocationSettingsResult> result =
LocationServices.SettingsApi.checkLocationSettings(
mLocationClient,
mLocationSettingsRequest
);
result.setResultCallback(this);
Где this
- следующий обратный вызов:
@Override
public void onResult(LocationSettingsResult locationSettingsResult) {
final Status status = locationSettingsResult.getStatus();
Intent resolutionIntent;
switch (status.getStatusCode()) {
case LocationSettingsStatusCodes.SUCCESS:
// Everything is OK, starting request location updates
break;
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
// Seems the user need to change setting to enable locations updates, call startResolutionForResult(Activity, REQUEST_CODE)
break;
case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
// Error, cannot retrieve location updates.
break;
}
}
SUCCESS
ОК, чтобы воспроизвести, просто включите GPS.
RESOLUTION_REQUIRED
также подходит для воспроизведения, отключает только GPS.
SETTINGS_CHANGE_UNAVAILABLE
- это сделка. Если пользователь выбирает "НИКОГДА" , когда выполняется шаг RESOLUTION_REQUIRED
, результат всегда будет с этим статусом.
У Google Play Services есть опция reset программно флаг, когда пользователь выбирает параметр "НИКОГДА" ?
Я знаю, что "НИКОГДА" , похоже, " На самом деле, не спрашивайте меня снова!!!", но я думаю, чтобы создать вариант, если пользователь передумает, конечно, если это возможно.
В этом случае я снова смогу получить статус RESOLUTION_REQUIRED
и попросить пользователя принять LocationUpdates, когда приложение будет выполнено в следующий раз.