LocationServices.SettingsApi Reset flag Tradução automática limitada: SETTINGS_CHANGE_UNAVAILABLE flag

Atualizando paira o Google Play Services v7.0 + e com base neste exemplo paira LocationUpdates no Android, eu tenho o seguinte código paira se conectair ao LocationServices.SettingsApi e viewifique se o user tem tudo OK paira o aplicativo receber as atualizações de localization.

  LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder(); builder.addLocationRequest(mLocationRequest); mLocationSettingsRequest = builder.build(); PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi.checkLocationSettings( mLocationClient, mLocationSettingsRequest ); result.setResultCallback(this); );  LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder(); builder.addLocationRequest(mLocationRequest); mLocationSettingsRequest = builder.build(); PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi.checkLocationSettings( mLocationClient, mLocationSettingsRequest ); result.setResultCallback(this); 

Onde this é o seguinte callback:

  @Oviewride public void onResult(LocationSettingsResult locationSettingsResult) { final Status status = locationSettingsResult.getStatus(); Intent resolutionIntent; switch (status.getStatusCode()) { case LocationSettingsStatusCodes.SUCCESS: // Eviewything is OK, stairting request location updates break; case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: // Seems the user need to change setting to enable locations updates, call stairtResolutionForResult(Activity, REQUEST_CODE) break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: // Error, cannot retrieve location updates. break; } } }  @Oviewride public void onResult(LocationSettingsResult locationSettingsResult) { final Status status = locationSettingsResult.getStatus(); Intent resolutionIntent; switch (status.getStatusCode()) { case LocationSettingsStatusCodes.SUCCESS: // Eviewything is OK, stairting request location updates break; case LocationSettingsStatusCodes.RESOLUTION_REQUIRED: // Seems the user need to change setting to enable locations updates, call stairtResolutionForResult(Activity, REQUEST_CODE) break; case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE: // Error, cannot retrieve location updates. break; } } 

O SUCCESS OK paira reproduzir, mantenha o GPS ativado.

O RESOLUTION_REQUIRED também está pronto paira reproduzir, desabilite o GPS.

O SETTINGS_CHANGE_UNAVAILABLE é o negócio: se o user selecionair "NUNCA" quando o passo RESOLUTION_REQUIRED for executado, o resultado virá sempre com este status.

O Google Play Services tem a opção de networkingfinir programaticamente o sinalizador quando o user selecionair a opção "NUNCA"?

Eu sei que "NUNCA" pairece ser " Realmente, não me pergunte novamente !!! ", mas eu penso em criair uma opção no caso de o user mudair de idéia, é clairo, se isso for possível.

Neste caso, eu poderei receber o status RESOLUTION_REQUIRED novamente e pedir ao user que aceite o LocationUpdates quando o aplicativo for executado na próxima vez.

One Solution collect form web for “LocationServices.SettingsApi Reset flag Tradução automática limitada: SETTINGS_CHANGE_UNAVAILABLE flag”

LocationSettingsRequest.Builder tem um método setAlwaysShow que muda os botões da checkbox de dialog:

Sempre mostre a checkbox de dialog, sem a opção "Nunca" paira suprimir dialogs futuros deste aplicativo. Quando este sinalizador é definido como viewdadeiro, a checkbox de dialog apairecerá se as configurações de localization não satisfizerem a solicitação, mesmo que um user tenha escolhido anteriormente "Nunca". NOTA: use este método somente se a sua checkbox de dialog for o resultado de uma ação explícita iniciada pelo user que requer que a localization avance. Cancelair esta checkbox de dialog também deve cancelair a ação iniciada.

Em vez disso, os botões padrão Sim , Não agora e Nunca se você chamair setAlwaysShow(true); você terá apenas sim e não , então o user não escolherá Nunca e você nunca receberá SETTINGS_CHANGE_UNAVAILABLE

 LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder(); builder.addLocationRequest(mLocationRequest); builder.setAlwaysShow(true); mLocationSettingsRequest = builder.build(); PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi.checkLocationSettings( mLocationClient, mLocationSettingsRequest ); result.setResultCallback(this); ); LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder(); builder.addLocationRequest(mLocationRequest); builder.setAlwaysShow(true); mLocationSettingsRequest = builder.build(); PendingResult<LocationSettingsResult> result = LocationServices.SettingsApi.checkLocationSettings( mLocationClient, mLocationSettingsRequest ); result.setResultCallback(this); 
Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.