Android 当我更改设备区域设置时,如何强制应用程序使用特定区域设置?

Android 当我更改设备区域设置时,如何强制应用程序使用特定区域设置?,android,localization,Android,Localization,我有一个应用程序,有法语和德语的字符串。我将这些字符串分别放在值fr和值de中 当前状态: 设备区域设置:en US 当我启动应用程序时,我希望应用程序显示英语(en-US)。我只希望应用程序使用法语或德语,这取决于我通过API接收到的标志。为此,在Application.onCreate()中,我使用这段代码强制将区域设置为英语-locale在本例中是en-US public void updateLocale(@NonNull Locale locale) { checkNotNull(

我有一个应用程序,有法语和德语的字符串。我将这些字符串分别放在
值fr
值de

当前状态: 设备区域设置:en US

当我启动应用程序时,我希望应用程序显示英语(en-US)。我只希望应用程序使用法语或德语,这取决于我通过API接收到的标志。为此,在
Application.onCreate()
中,我使用这段代码强制将区域设置为英语-
locale
在本例中是en-US

public void updateLocale(@NonNull Locale locale) {
  checkNotNull(locale);

  if (!getCurrentLocale().equals(locale)) {
    Locale.setDefault(locale);

    Resources resources = context.getResources();
    Configuration configuration = resources.getConfiguration();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
      configuration.setLocale(locale);
    } else {
      configuration.locale = locale;
    }
    setCurrentLocale(locale);
    resources.updateConfiguration(configuration, resources.getDisplayMetrics());
  }
}
当前区域设置分别通过
setCurrentLocale(locale)
getCurrentLocale()
写入和读取SharedReferences

当我将设备区域设置更改为fr fr并返回应用程序时,区域设置将更改为法语,但我不希望发生这种情况(因为我还没有进行API调用以获取标志)。我想在
onConfigurationChanged
方法中强制使用英语:

@Override
public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
  Locale newLocale;
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    newLocale = newConfig.getLocales().get(0);
  } else {
    newLocale = newConfig.locale;
  }

  if (!localeManager.isFlagTurnedOn()) {
    localeManager.updateLocale(LOCALE_ENGLISH);
  }
}
这不行!当我返回应用程序时,区域设置将更改为法语(如果我将设备区域设置更改为fr)。我怎样才能防止这种情况发生?此外,如何确保应用程序在更改为横向时不会默认为系统区域设置

任何帮助都将不胜感激!谢谢