如何获得系统';android中的语言环境(不是应用程序';s)

如何获得系统';android中的语言环境(不是应用程序';s),android,locale,Android,Locale,我正在编写一个应用程序,它有一个选项菜单,有三个语言选项:自动、英语、希腊语 当用户更改设置时,我将其保存在共享首选项中,并使用新任务标志调用我的开始活动 当该活动开始时(甚至在setContentView之前),我调用以下方法: string language = MainApplication.Language; //this is from shared preferences if (language == null || language.Equals(

我正在编写一个应用程序,它有一个选项菜单,有三个语言选项:自动、英语、希腊语

当用户更改设置时,我将其保存在共享首选项中,并使用新任务标志调用我的开始活动

当该活动开始时(甚至在setContentView之前),我调用以下方法:

        string language = MainApplication.Language; //this is from shared preferences
        if (language == null || language.Equals("auto")) {
            language = Java.Util.Locale.Default.Language; //if language is not set, or the setting is auto then load the default language
            MainApplication.Language = "auto"; //save into the shared preferences that the language was set to auto
        }
        App.instance.set_language(language); //update the data layer's language
        Java.Util.Locale locale = new Java.Util.Locale(language); 
        Java.Util.Locale.Default = locale; //change the default locale
        Configuration config = new Configuration();//create a new configuration and set its locale
        config.Locale = locale;
        Application.Context.Resources.UpdateConfiguration(config, null);//update the system locale
上面的代码是用Xamarin编写的,所以它是C语言,但java的代码是相同的

我的问题是,如果我将语言更改为希腊语,例如,当上面的代码运行时,它会将默认区域设置设置为“el”,但如果用户在这之后选择自动选项,因为应用程序的默认区域设置为“el”,它会保留该设置,即使我的系统语言是英语

当我重新启动应用程序时,它工作正常,因为应用程序的默认区域设置是系统的

所以我的问题是,有没有办法获取系统的区域设置而不是应用程序


p、 我知道我总是可以在应用程序中存储系统的区域设置,并在OnConfiguration Changed中更改它,我只是想知道是否有其他方法可以通过adb shell getprop|grep locale获得它

它将打印类似的输出,如:

[persist.sys.locale]: [tr-TR]
[ro.product.locale]: [tr-TR]
因此,您可以按以下方式运行流程:

Process process = Runtime.getRunTime().exec("getprop");
并使用
缓冲读取器检查输出字符串


或者基本上检查一下。

您可以通过
adb shell getprop | grep locale

它将打印类似的输出,如:

[persist.sys.locale]: [tr-TR]
[ro.product.locale]: [tr-TR]
因此,您可以按以下方式运行流程:

Process process = Runtime.getRunTime().exec("getprop");
并使用
缓冲读取器检查输出字符串


或者基本上检查一下。

否,正如我所说,这将返回我在主活动的onCreate方法中设置的区域设置,我想获取系统的区域设置。这可能有帮助吗?不,正如我所说,这将返回我在主活动的onCreate方法中设置的区域设置,我想获取系统的区域设置。这可能有帮助吗?