要解决Android应用程序的区域语言更改对英文无效,但对其他语言有效的问题,可以通过以下步骤进行操作:
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
setDefaultLanguage("en");
}
private void setDefaultLanguage(String languageCode) {
Resources resources = getResources();
Configuration configuration = resources.getConfiguration();
Locale locale = new Locale(languageCode);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
configuration.setLocale(locale);
} else {
configuration.locale = locale;
}
resources.updateConfiguration(configuration, resources.getDisplayMetrics());
}
}
...
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
updateLanguage();
}
private void updateLanguage() {
Resources resources = getResources();
Configuration configuration = resources.getConfiguration();
String languageCode = configuration.locale.getLanguage();
Locale locale = new Locale(languageCode);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
configuration.setLocale(locale);
} else {
configuration.locale = locale;
}
resources.updateConfiguration(configuration, resources.getDisplayMetrics());
}
}
public class MainActivity extends BaseActivity {
...
}
通过以上代码示例,当应用程序启动时,会将默认语言设置为英文。然后,在每个Activity的onCreate()方法中,会根据当前语言环境更新语言配置。这样就可以确保英文语言无论如何都会被应用程序使用,而其他语言会根据系统的区域设置进行更改。