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:
- Android Excepción: LoadedApk: forgetServiceDispatcher: 888 {AdWorker # 2
- ¿Qué sucede cuando "quito" una aplicación de pago de Apple y Android App Store?
- Problema de diálogo desconocido en los servicios de Google Play cuando intenta utilizar el ejemplo de Google Drive
- IllegalArgumentException al agregar una API de mensajería en la nube a GoogleApiClient
- Servicios de juegos de google google - probar los resultados de las cuentas de acceso en error desconocido
@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.
- NullPointerException en los servicios de Google Play al llamar a play () en RemotePlaybackClient
- Android en las donaciones de aplicaciones
- Cómo ejecutar la versión de la aplicación de depuración en una base de datos de depuración de 'FireBase'
- Requisito de mencionar la versión de servicios de Google Play en el manifiesto de la aplicación
- Google Play Services no muestra la tabla de clasificación después de Auth
- Google Play Games - Actividad que llama automáticamente a beginUserInitiatedSignIn ()
- Mi aplicación es compatible en 2.3.3, cómo hacerlo compatible
- La compra en la aplicación utiliza una cuenta incorrecta después de la actualización
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 Sí , No ahora y Nunca si llama a setAlwaysShow(true);
Sólo tendrá Sí 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);
- Cómo obtener el evento onClickListener () en la barra de acciones personalizada
- OnClick posición en cadena en TextView