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文档:

默认语言环境适用于涉及向用户呈现数据的任务。

似乎你应该只是使用它。