Android获取系统语言(兼容7.0)

从 Android 7.0 开始,系统语言支持多个,可手动排序,系统根据 App 本身支持的语言和手机出厂设置的语言等因素来调整 App 本身的默认语言。使用 getResources().getConfiguration().getLocales() 返回的是一个 LocaleList 对象,它包含 >=1 个 Locale,内容项可由用户增删,顺序可由用户调整。但是,此接口返回的语言顺序和用户定义的顺序不一定一致!

获取系统真实首选语言:

Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    locale = LocaleList.getDefault().get(0);
} else {
    locale = Locale.getDefault();
}

String language = locale.getLanguage() + "-" + locale.getCountry();
Log.i("yezhou", "Language: " + getLanguage() + ", LocaleLanguage: " + getLocaleLanguage() + ", Country: " + getCountry());
//Language: zh, LocaleLanguage: zh-CN, Country: CN

public static String getLanguage() {
    Locale locale;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        locale = LocaleList.getDefault().get(0);
    } else {
        locale = Locale.getDefault();
    }
    return locale.getLanguage();
}

public static String getLocaleLanguage() {
    Locale locale;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        locale = LocaleList.getDefault().get(0);
    } else {
        locale = Locale.getDefault();
    }
    return locale.getLanguage() + "-" + locale.getCountry();
}

public static String getCountry() {
    Locale locale;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        locale = LocaleList.getDefault().get(0);
    } else {
        locale = Locale.getDefault();
    }
    return locale.getCountry();
}

参考资料:https://developer.android.com/reference/java/util/Locale.html

上一篇 Android电源锁和屏幕锁帮助类
下一篇 Android获取屏幕的物理尺寸
目录
文章列表
1 MathJax基础之方程组
MathJax基础之方程组
2
Grafana插件扩展之世界地图安装
Grafana插件扩展之世界地图安装
3
rocketmq-console 部署采坑记录
rocketmq-console 部署采坑记录
4
Jenkins安装报错:该Jenkins实例似乎已离线
Jenkins安装报错:该Jenkins实例似乎已离线
5
Android Splash适配解决启动背景图拉伸问题
Android Splash适配解决启动背景图拉伸问题
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。