如何以编程方式抑制Android应用程序中的特定区域设置

如何以编程方式抑制Android应用程序中的特定区域设置,android,internationalization,locale,Android,Internationalization,Locale,据我们所知,Android应用程序在支持不同地区方面具有高度的可定制性。在我的例子中,我的应用程序目前支持6个地区,并且一切都很顺利。每当用户选择电话语言环境时,应用程序都会切换到另一个语言环境和所有菜单,消息都会使用本地语言 现在的问题是,我希望通过编程抑制应用程序中的特定语言环境,因为我将使用不同的渠道、定价政策等在不同的国家分发应用程序(并不总是通过Android Market)。所以,若应用程序是针对中国的,那个么用户就不能将语言环境切换为英语或法语 最简单的方法就是从应用程序中删除其他

据我们所知,Android应用程序在支持不同地区方面具有高度的可定制性。在我的例子中,我的应用程序目前支持6个地区,并且一切都很顺利。每当用户选择电话语言环境时,应用程序都会切换到另一个语言环境和所有菜单,消息都会使用本地语言

现在的问题是,我希望通过编程抑制应用程序中的特定语言环境,因为我将使用不同的渠道、定价政策等在不同的国家分发应用程序(并不总是通过Android Market)。所以,若应用程序是针对中国的,那个么用户就不能将语言环境切换为英语或法语

最简单的方法就是从应用程序中删除其他区域设置资源——我理解这一点。但从源代码维护的角度来看,它不是很舒服,所以我更喜欢使用一些编程方式来拒绝/抑制应用程序中的某些区域设置

有什么想法吗?

使用此代码

    private void callSwitchLang(String langCode) {
    Locale locale = new Locale(langCode);
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config,
            getBaseContext().getResources().getDisplayMetrics()); 
onCreate(null);
}
在这种情况下,您可以传递所选的语言代码……

使用此代码

    private void callSwitchLang(String langCode) {
    Locale locale = new Locale(langCode);
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config,
            getBaseContext().getResources().getDisplayMetrics()); 
onCreate(null);
}

在这种情况下,您需要传递所选的语言代码……

意味着您需要从整个应用程序中设置语言环境?并选择您的区域设置所有数据都使用选定的语言???这些都是你通过编程想要的吗?@MiteshTechMe:你仔细阅读了这篇文章吗?如果没有-请再读一遍,据我所知,你必须阅读手册。您可以使用MiteshTechMe的代码在应用程序中重置(不受支持的)区域设置(以抑制其他区域设置的方式)。是否意味着您要从整个应用程序中设置区域设置?并选择您的区域设置所有数据都使用选定的语言???这些都是你通过编程想要的吗?@MiteshTechMe:你仔细阅读了这篇文章吗?如果没有-请再读一遍,据我所知,你必须阅读手册。您可以使用MiteshTechMe的代码在应用程序中重置(不受支持的)区域设置(以抑制其他区域设置的方式);在您的响应中。onCreate(null);用于重置应用程序。。。当您调用onCreate时(null);比应用程序更改您选择的语言应用程序…有预感,所以这是一个黑客通过生命周期。我知道这种方法,但onCreate(null)是新的。谢谢感谢您的回复。@MiteshTechMe:您的代码意味着我可以将语言环境更改为所需的语言环境,并重新加载必要的资源。但若用户改变了手机的语言环境该怎么办呢?我如何拦截这个事件,否则应用程序将加载用户设置的区域设置,嗯?通过使用此代码,应用程序区域设置将更改。。。在此之后,如果用户更改设备区域设置,则tht对应用程序不重要……onCreate(null)是什么;在您的响应中。onCreate(null);用于重置应用程序。。。当您调用onCreate时(null);比应用程序更改您选择的语言应用程序…有预感,所以这是一个黑客通过生命周期。我知道这种方法,但onCreate(null)是新的。谢谢感谢您的回复。@MiteshTechMe:您的代码意味着我可以将语言环境更改为所需的语言环境,并重新加载必要的资源。但若用户改变了手机的语言环境该怎么办呢?我如何拦截这个事件,否则应用程序将加载用户设置的区域设置,嗯?通过使用此代码,应用程序区域设置将更改。。。之后,如果用户更改设备区域设置,则tht对应用程序不重要。。。。。