【问题标题】:How to get device Locale on android pre Nougat (< api 24)?如何在 android pre Nougat (< api 24) 上获取设备区域设置?
【发布时间】:2021-01-03 22:21:53
【问题描述】:

我需要在 android studio 上获取设备 Locale,但显然下面的代码仅适用于 api 级别 24+;如何在较低级别的 api 中实现与这行代码相同的结果?

getResources().getConfiguration().getLocales().get(0);

【问题讨论】:

标签: android


【解决方案1】:

对于较低的lavel api,您可以使用

Locale current = getResources().getConfiguration().locale;

参考:https://stackoverflow.com/a/14389640/12676247

【讨论】:

    【解决方案2】:

    根据谷歌文档,命令 public Locale locale 在 API 24 中已弃用,您可以在 API 级别高于 24 时使用 getLocales()setLocales(android.os.LocaleList)。所以您应该使用 yoconfiguration.locale 而不是较低的 API。

    @Override
     public void applyOverrideConfiguration(Configuration overrideConfiguration) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && Build.VERSION.SDK_INT <= Build.VERSION_CODES.N_MR1) {
        // update overrideConfiguration with your locale  
        setLocale(overrideConfiguration) // you need to implement this
    }
    super.applyOverrideConfiguration(overrideConfiguration);
    } 
    

    也看看这个,它说明了一切:

    Set Locale programmatically

    【讨论】:

    • 如果我使用 Locale loc = Locale.getDefault();我可以得到相同的结果。我应该使用它吗?
    • Locale.getDefault() 自 API 24 起已添加。
    猜你喜欢
    • 2014-06-14
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2017-03-22
    • 2020-01-14
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多