在每个应用程序语言中,如果系统区域设置不同,如何在 API < 33 中获取应用程序区域设置?

Moh*_*ohd 7 android locale localization android-13

Android 刚刚在 Android API 级别 33 中引入了每应用程序语言首选项,它允许您更改应用程序语言,而不管系统语言如何。

为了支持运行 API <= 32 的设备,Android 在Androidx Appcompat: androidx.appcompat:appcompat:1.6.0-beta01中添加了: AppCompatDelegate.setApplicationLocales(appLocale);

现在应用程序语言可以与系统语言不同。

现在有2种情况:

  1. 在 API <= 32 中:
    Locale.getDefault()将返回与应用程序相同的系统区域设置。
  2. 在 API 33 中:
    Locale.getDefault()将返回应用程序区域设置而不是系统。并获取系统区域设置,LocaleManagerCompat.getSystemLocales(this).get(0)即可使用。

我的问题:如何在 Android API <= 32 中获取应用程序区域设置 当使用向后兼容性而不需要使用时Context?

我发现这与我需要的相反。

我试图存储区域设置,然后在需要时获取它,但这种方法需要Context这是不合格的。

aor*_*sby 6

你能用吗AppCompatDelegate.getApplicationLocales()?

我现在正在经历和你一样的挑战,这似乎对我有用。

AppCompatDelegate -> [es_US] // after setting with AppCompatDelegate
Locale -> en_US // never changed, my system default

// Worked on emulators for both API 27 and 33
Run Code Online (Sandbox Code Playgroud)