android

Configuración de la variable `locale` está en desuso-Android



(1)

Espero que esto ayude, también agregué los captadores.

@SuppressWarnings("deprecation") public Locale getSystemLocaleLegacy(Configuration config){ return config.locale; } @TargetApi(Build.VERSION_CODES.N) public Locale getSystemLocale(Configuration config){ return config.getLocales().get(0); } @SuppressWarnings("deprecation") public void setSystemLocaleLegacy(Configuration config, Locale locale){ config.locale = locale; } @TargetApi(Build.VERSION_CODES.N) public void setSystemLocale(Configuration config, Locale locale){ config.setLocale(locale); } public static void setLanguage(Context context, String languageCode){ Locale locale = new Locale(languageCode); Locale.setDefault(locale); Configuration config = new Configuration(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { setSystemLocale(config, locale); }else{ setSystemLocaleLegacy(config, locale); } if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) context.getApplicationContext().getResources().updateConfiguration(config, context.getResources().getDisplayMetrics()); }

ACTUALIZACIÓN 12/3/2016

Debido a que context.getApplicationContext (). GetResources (). UpdateConfiguration () ahora está en desuso, le recomiendo que revise esta solución y adopte un enfoque diferente para sobrescribir la configuración del sistema Android.

Mejor solución: https://stackoverflow.com/a/40704077/2199894

Utilizo este código para configurar el idioma predeterminado manualmente en la aplicación en varios idiomas:

public static void setLanguage(Context context, String languageCode){ Locale locale = new Locale(languageCode); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; // Deprecated !! context.getApplicationContext().getResources().updateConfiguration(config, context.getResources().getDisplayMetrics()); }

por lo que ahora no podemos establecer locale por config.locale está en desuso porque la variable se eliminará en API 24.

Así que vi que la alternativa es establecer:

config.setLocales ();

lugar

Añadido en el nivel API 1

Locale locale

Este campo está en desuso en el nivel de API 24. No establezca ni lea esto directamente. Use getLocales () y setLocales (LocaleList). Si solo se necesita la configuración regional principal, getLocales (). Get (0) es ahora el elemento de acceso preferido.

Preferencia de usuario actual para la configuración regional, correspondiente al calificador de recursos de configuración regional.

También noté que hay setLocale(Locale) también pero para api 17 y superior

Revisé la documentación de setLocales (LocalList) y está marcada en gris como si también estuviera en desuso.

Entonces, ¿qué puede ser la solución para esto?