Я реализовал этот код для изменения языка приложения, и он корректно работает в эмуляторе с API 23, 24, 25, 26, 27 и 28 и в реальном устройстве также при установке в "Active BuildВариант " mode в " debug " state
Информация: Android N меняет язык программно
Но когда я загружаю приложение в GooglePlay Store в режиме «Active Build Variant» в режиме «release» указывает, что смена языка не работает на реальном устройстве
Что может происходить?Я не знаю, что делать с этой проблемой больше.Я ценю, если вы можете мне помочь.Спасибо
Мой статический метод ContextWrapper, класс Config:
public static ContextWrapper changeLang(Context context, String lang_code){
Locale sysLocale;
Resources rs = context.getResources();
Configuration config = rs.getConfiguration();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
sysLocale = config.getLocales().get(0);
} else {
sysLocale = config.locale;
}
if ( !lang_code.equals("") ) {
Locale locale = new Locale(lang_code);
Locale.setDefault(locale);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
config.setLocale(locale);
} else {
config.locale = locale;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
context = context.createConfigurationContext(config);
} else {
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
}
}
return new ContextWrapper(context);
}
Мой код активности
@Override
protected void attachBaseContext(Context newBase) {
pref = PreferenceManager.getDefaultSharedPreferences( newBase );
String lang_code = pref.getString("LANG_APP","");
Context context = Config.changeLang(newBase, lang_code);
super.attachBaseContext(context);
}
Что может происходить?Я не знаю, что делать с этой проблемой больше.Я ценю, если вы можете мне помочь.Спасибо