Android 13中如何从App语言中识别设备语言?

Ser*_*gey 6 android android-13 android-locale

我在我的应用程序中添加了对每种应用程序语言的支持,即 android 13 功能,现在它是英语和俄语。我可以从设置更改应用程序语言,而无需更改设备语言。现在出于分析目的,我需要了解应用程序语言和设备语言。但如果我的设备是英语且应用程序是俄语,我总是收到俄语 -

   Resources.getSystem().configuration.locales.get(0).language  - ru

   context.resources.configuration.locales[0].language - ru

   Locale.getDefault().language - ru
Run Code Online (Sandbox Code Playgroud)

我希望收到来自

Resources.getSystem().configuration.locales.get(0).language
Run Code Online (Sandbox Code Playgroud)

context.resources.configuration.locales[0].language
Run Code Online (Sandbox Code Playgroud)

我会很高兴得到任何帮助

aor*_*sby 5

我一直在研究这些:

AppCompatDelegate.getApplicationLocales()  // app locales
LocaleManagerCompat.getSystemLocales(Context) // system locales
Run Code Online (Sandbox Code Playgroud)

getApplicationLocales()[]如果没有应用程序级别设置,可能会返回空数组。在这种情况下,将使用系统区域设置。

我也用它AppCompatDelegate.setApplicationLocales(LocaleListCompat)来保持一致性。

我不确定是否有非 Compat 类可用于针对API 33,但这目前对我来说适用于 API 27。

正如另一个答案中提到的,您需要导入- 请参阅此处的androidx.appcompat:appcompat:1.6.0-beta01第一行。


小智 3

LocaleManagerCompat.getSystemLocales(Context)系统区域设置列表在或更高版本中可用androidx.core:core:1.9.0-beta01