检测真实的系统区域设置

时间:2013-10-14 13:22:39

标签: android

我正在努力在应用上设置区域设置。

我想要的是一个切换按钮:我想让用户在默认系统区域设置和固定语言(例如“en”)之间切换。

我从S.O.的另一张票中拿到了这段小码。 (谢谢):

private static void setThisLocale(Locale locale) {
    Locale.setDefault(locale);
    android.content.res.Configuration config = new android.content.res.Configuration();
    config.locale = locale;
    ctx.getResources().updateConfiguration(config, ctx.getResources().getDisplayMetrics());
    Log.d("locale", "locale set: " + locale.getLanguage());
}

此函数设置区域设置,它看起来有效。

问题是defaultLanguage,在此之后,仍然设置,我再也检测不到哪个是原始语言环境。所以,我不能回去!例如:

    defaultLocale = ctx.getResources().getConfiguration().locale;

        defaultLocale = Locale.getDefault();

两者都会返回“en”,即使在更改之前默认语言环境是......说......“它”。

奇怪的是,即使手动重启应用程序后它也不会改变,看起来Android会存储任何应用程序的默认语言环境。因此,即使在应用启动时检查哪个是默认语言环境也不起作用。

返回原始defaultLocale的唯一方法是重新安装应用程序,此时按钮一次允许我在原始默认语言环境和“en”之间切换,直到它开始交替再次“en”和“en”。

从这看起来,看起来任何应用程序都存储了默认语言环境,但我并不知道它。

当然,一个糟糕的编程补丁可能只是在我发现它与“en”不同时才记住默认语言环境,但这不会检测到真正的系统区域设置,我想找到更好的东西。

有没有办法检测哪个是SYSTEM的REAL默认语言环境,而不仅仅是为应用程序设置的最新默认语言环境?

找到它。正确的答案是:

defaultLocale = Resources.getSystem().getConfiguration().locale;

0 个答案:

没有答案