Android获取当前的语言环境,而不是默认的
如何在Android中获取用户当前的语言环境?
我可以得到默认的,但这可能不是当前的一个正确的?
基本上我想要从当前语言环境的两个字母的语言代码。 不是默认的。 没有Locale.current()
默认的Locale
是在运行时为系统属性设置的应用程序进程静态构build的,所以它将代表应用程序启动时在该设备上select的Locale
。 通常情况下,这很好,但这确实意味着如果用户在应用程序运行后更改了其Locale
设置, getDefaultLocale()
的值可能不会立即更新。
如果您在应用程序中由于某种原因需要捕获这样的事件,您可以尝试从资源Configuration
对象中获取可用的Locale
,即
Locale current = getResources().getConfiguration().locale;
如果您的应用程序需要更改设置,您可能会发现此值更新更快。
Android N(Api级别24)更新(无警告):
Locale getCurrentLocale(Context context){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ return context.getResources().getConfiguration().getLocales().get(0); } else{ //noinspection deprecation return context.getResources().getConfiguration().locale; } }
从getDefault
的文档:
返回用户的首选语言环境。 这可能已被setDefault(Locale)的这个过程覆盖。
另外从Locale
文档:
默认语言环境适用于涉及向用户呈现数据的任务。
似乎你应该只是使用它。