Locale.getDefault()在某些Android设备

时间:2017-08-07 22:02:09

标签: android locale

我的应用中有一个广播接收器,当设备的区域设置发生变化时会被调用。我的应用程序在一些设备上存在一个错误,特别是Nexus 5x和Galaxy S8 +(很可能是其他设备),其中Locale.getDefault()返回陈旧/先前的值。本地化字符串正在为新语言正确显示,但在应用程序内部,我们的语言环境已过时。有什么想法吗?

例如:

1) Device is in English -> App locale tells us we are in English.

2) Background the app and change the device language to German

3) App receives the locale changed broadcast event, Locale.getDefault() returns English instead of German

我看到德国人在这里返回许多设备,但不是所有设备。

1 个答案:

答案 0 :(得分:3)

another answer中引用时,默认语言环境是静态定义的at the time the application is created。尝试直接从您的资源中检索语言环境。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
    return getResources().getConfiguration().getLocales().get(0);
} else{
    return getResources().getConfiguration().locale;
}