如何获取当前区域设置(API级别24)?

use*_*180 23 android locale android-7.0-nougat

我是这样做的:

context.getResources().getConfiguration().locale
Run Code Online (Sandbox Code Playgroud)

Configuration.locale 如果目标是24,则弃用.所以我做了这个改变:

context.getResources().getConfiguration().getLocales().get(0)
Run Code Online (Sandbox Code Playgroud)

现在它说它只有minSdkVersion24,所以我不能使用它因为我的最小目标较低.

什么是正确的方法?

Ego*_*gor 51

检查您正在运行的版本并回退到已弃用的解决方案:

Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    locale = context.getResources().getConfiguration().getLocales().get(0);
} else {
    locale = context.getResources().getConfiguration().locale;
}
Run Code Online (Sandbox Code Playgroud)


Ken*_*ndt 6

您可以使用Locale.getDefault(),这是获取当前的Java标准方法Locale.


vey*_*dan 6

这是使用该类的单行代码ConfigurationCompat

ConfigurationCompat.getLocales(context.getResources().getConfiguration()).get(0)
Run Code Online (Sandbox Code Playgroud)