Saltar al contenido

Android obtiene la configuración regional actual, no la predeterminada

Solución:

El valor por defecto Locale se construye estáticamente en tiempo de ejecución para su proceso de aplicación desde la configuración de propiedades del sistema, por lo que representará el Locale seleccionado en ese dispositivo cuando se lanzó la aplicación. Normalmente, esto está bien, pero significa que si el usuario cambia su Locale en la configuración después de que se ejecute el proceso de solicitud, el valor de getDefaultLocale() probablemente no se actualizará de inmediato.

Si necesita atrapar eventos como este por algún motivo en su aplicación, puede intentar obtener el Locale disponible en el recurso Configuration objeto, es decir

Locale current = getResources().getConfiguration().locale;

Puede encontrar que este valor se actualiza más rápidamente después de un cambio de configuración si es necesario para su aplicación.

Actualización de Android N (Api nivel 24) (sin advertencias):

   Locale getCurrentLocale(Context context){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
            return context.getResources().getConfiguration().getLocales().get(0);
        } else{
            //noinspection deprecation
            return context.getResources().getConfiguration().locale;
        }
    }

Si está utilizando la biblioteca de soporte de Android, puede utilizar ConfigurationCompat en lugar del método de @ Makalele para deshacerse de las advertencias de desaprobación:

Locale current = ConfigurationCompat.getLocales(getResources().getConfiguration()).get(0);

o en Kotlin:

val currentLocale = ConfigurationCompat.getLocales(resources.configuration)[0]
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *