LocationServices.SettingsApi Restablecer SETTINGS_CHANGE_UNAVAILABLE flag

Actualizando a Google Play Services v7.0 + y basado en este ejemplo para LocationUpdates en Android, tengo el siguiente código para conectarme a LocationServices.SettingsApi y comprobar si el usuario tiene todo bien para que la aplicación reciba las actualizaciones de ubicación.

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

Cuando se trata de la devolución de llamada siguiente:

  @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; } } 

El SUCCESS está bien para reproducir, sólo mantener GPS habilitado.

El RESOLUTION_REQUIRED también está bien para reproducir, sólo deshabilitar GPS.

SETTINGS_CHANGE_UNAVAILABLE es el trato: Si el usuario selecciona "NUNCA" cuando se ejecuta el paso RESOLUTION_REQUIRED , el resultado vendrá siempre con este estado.

¿Los servicios de Google Play tienen una opción para restablecer programaticamente el indicador cuando el usuario selecciona la opción "NUNCA"?

Sé que "NUNCA" parece ser " Realmente, no me preguntes de nuevo !!! ", pero estoy pensando en crear una opción en caso de que el usuario cambie de opinión, por supuesto, si esto puede ser posible.

En este caso, podré volver a recibir el estado RESOLUTION_REQUIRED y pedirle al usuario que acepte las LocationUpdates cuando se ejecute la aplicación la próxima vez.

LocationSettingsRequest.Builder tiene un método setAlwaysShow que cambia los botones del diálogo:

Siempre muestre el diálogo, sin la opción "Nunca" para suprimir futuros diálogos de esta aplicación. Cuando este indicador se establece en true, el cuadro de diálogo aparecerá si la configuración de ubicación no satisface la solicitud, incluso si el usuario ha elegido previamente "Nunca". NOTA: Sólo utilice este método si su diálogo es el resultado de una acción explícita iniciada por el usuario que requiere que la ubicación continúe. La cancelación de este diálogo también debería cancelar la acción iniciada.

En su lugar, los botones predeterminados , No ahora y Nunca si llama a setAlwaysShow(true); Sólo tendrá y No , por lo que el usuario no elegirá Nunca y nunca recibirá 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); 
  • Negación de permisos: Acceso al servicio ComponentInfo {...} desde pid = -1
  • La pestaña 'Leaderboard` que no se muestra en Google Play Games, mientras que la pestaña `Achievements` está allí
  • Android Studio 2.2 Google Play servicios de sincronización Error
  • Android GoogleMap o SupportMapFragment - excepción de puntero nulo
  • Google-services.json para diferentes productFlavors
  • Prácticas recomendadas para guardar el juego cuando el usuario ha salido de Google Play Services?
  • Restringir el API de autocompletar de lugares a ciudades de un país específico android
  • ¿La versión 3 de la facturación en aplicaciones de Google Play admite reembolsos?
  • Google Sign In no funciona después de publicado en playstore
  • Android Google PlacePicker mostrando texto superpuesto
  • Android gms: play-services: 8.1.0 DexIndexOverflowException
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.