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

5
Android在API级别33中引入了每个应用程序的语言偏好设置,使您可以更改应用程序语言,而不受系统语言的影响。
为了支持运行API <= 32的设备,Android在Androidx Appcompat:androidx.appcompat:appcompat:1.6.0-beta01中添加了:AppCompatDelegate.setApplicationLocales(appLocale); 现在应用程序语言可以与系统语言不同。
现在有两种情况:
1. 在API <= 32中: Locale.getDefault()将返回等于应用程序的系统语言环境。 2. 在API 33中: Locale.getDefault()将返回应用程序语言环境,而不是系统语言环境。要获取系统语言环境,可以使用LocaleManagerCompat.getSystemLocales(this).get(0)
我的问题:如何在使用向后兼容且不需要使用Context的情况下,在Android API <=32中获取应用程序区域设置?
我已经找到了相反的this
我尝试过存储Locale,然后在需要时获取它,但这种方法需要使用无效的Context。
1个回答

5

你可以使用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

谢谢您。AppCompatDelegate.getApplicationLocales()返回一个列表,也许您只使用了一种语言环境。因此,AppCompatDelegate.getApplicationLocales().get(0)是获取应用程序语言环境的方法。 - Mohd
1
它对我返回为空,是因为我是从BaseApplication中使用它。文档指出:注意:此API应始终在Activity.onCreate()之后调用。 - Starwave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接