Ответ 1
Надеюсь, что это поможет, я также добавил получателей.
@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());
}
ОБНОВЛЕНИЕ 12/3/2016
Так как context.getApplicationContext(). getResources(). updateConfiguration() теперь устарел, я настоятельно рекомендую вам проверить это решение и принять другой подход к перезаписывая конфигурацию системы Android.
Лучшее решение: fooobar.com/info/148517/...