当我需要从应用程序本身更改应用程序区域设置时(即在应用程序内部进行语言更改设置),我遇到了 AAB 的问题,问题是 AAB 只为我提供了我的设备语言资源,例如:
我的设备安装了英语和法语,所以 AAb 只给我英语和法语的资源,
但是从应用程序本身可以选择在英语、法语和印度尼西亚语之间切换语言,
在这种情况下,将语言更改为英语或法语时一切正常,但将其更改为印度尼西亚语时,应用程序只是进入崩溃循环,因为它一直在寻找印度尼西亚语但找不到。
这里的问题是即使我重新启动了应用程序,由于应用程序仍在寻找丢失的语言资源,它再次进入崩溃循环,而这里唯一的解决方案是清除现金或重新安装,这是普通用户赢得的解决方案不通过。
顺便提一下,这就是我通过应用程序更改语言环境的方式:
// get resources
Resources res = context.getResources();
// create the corresponding locale
Locale locale = new Locale(language); // for example "en"
// Change locale settings in the app.
android.content.res.Configuration conf = res.getConfiguration();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
conf.setLocale(locale);
conf.setLayoutDirection(locale);
} else {
conf.locale = locale;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
context.getApplicationContext().createConfigurationContext(conf);
}
res.updateConfiguration(conf, null);
PS 该应用程序在构建为 APK 时运行良好。