我正在按一个按钮更改应用程序的区域设置。它可以完美地在AVD上运行,也可以使用api 30在实际设备上调试和发布构建APK。
但是,一旦发布,它就不能与play store版本的应用程序协同工作。区域设置从未更改。
请帮忙!非常感谢。
这是设置片段中的代码:
private void setAppLocale(Context context, String language) {
Locale locale = new Locale(language);
Locale.setDefault(locale);
Configuration config = context.getResources().getConfiguration();
config.setLocale(locale);
context.createConfigurationContext(config);
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
Intent refresh = new Intent(getActivity().getApplicationContext(), MainActivity.class);
startActivity(refresh);
getActivity().finish();
}
一旦按下一个按钮,就会调用上面的内容,选择也会放入共享首选项中。活动被刷新&主活动被加载,但区域设置从未更改。
我的主要活动是这样的:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
hideSystemUI();
sharedPref = getPreferences(Context.MODE_PRIVATE);
selectedLanguage = sharedPref.getString("Test.SL.LanguageName", language);
selectedTheme = sharedPref.getString("Test.SL.ThemeName", "Light");
if (selectedTheme.equals("Light")){
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
} else if (selectedTheme.equals("Dark")) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
}
if (selectedLanguage.equals("Sinhala")) {
language = "Sinhala";
setAppLocale(this, "si");
} else {
language = "English";
setAppLocale(this, "en");
}
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
setSupportActionBar(binding.appBarMain.toolbar);
......
}
public void setAppLocale(Context context, String language) {
Locale locale = new Locale(language);
Locale.setDefault(locale);
Configuration config = context.getResources().getConfiguration();
config.setLocale(locale);
context.createConfigurationContext(config);
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
}
请提供任何想法、建议和解决方案!再次感谢你!
1条答案
按热度按时间dwthyt8l1#
更新新的应用程序包格式
谷歌推出了一种新的应用程序包格式,在客户端设备上安装apk文件时,可以将其拆分成更小的大小。然而,这意味着我们的应用程序中不能有动态的语言更改。
为了防止这种分裂,我们需要在应用程序文件夹中的build.gradle文件中添加额外的行,如下所示。
参考这篇文章