更改设备的语言设置(区域设置)

时间:2010-04-07 22:24:08

标签: android settings locale

我知道可以通过res / string在单个应用程序中使用多种语言,具体取决于Locale。 这是一个案例 (ANDROID) controling the user language

现在我该如何更改手机中的语言? 就像我做的那样 菜单>设置>语言与键盘>选择区域设置>语言

是否有一些真正的代码可以访问这些设置? 或者我应该为语言设置的快捷方式创建意图。 请发布一些代码

编辑: 使用Locale类 developer.android.com/intl/fr/reference/java/util/Locale.html

构造函数至少是Locale(String language) 输入是语言。 如何检索设备上使用的当前语言?

5 个答案:

答案 0 :(得分:43)

不确定是否直接从应用设置,但如果您想将用户发送给自己进行更改,请尝试以下操作:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.android.settings", "com.android.settings.LanguageSettings");            
startActivity(intent);

答案 1 :(得分:12)

还有另一种方法可以打开系统设置来更改语言:

Intent i = new Intent( android.provider.Settings.ACTION_LOCALE_SETTINGS );
startActivity( i );

它只显示语言列表,当您选择一种语言时 - 它会更改设备上的语言。

答案 2 :(得分:6)

我找到了自己问题的另一个答案。 有一个开源代码项目code.google.com/p/languagepickerwidget 它正在重新创建ListActivity以显示和选择语言。

Jim,你的解决方案非常简单,正是我所需要的。这是设置的重点。在您发布之后,我立即在市场上上传了一个名为“raygional”的应用。如果我能(我只有6分)我会让你的答案有用。

还有另一种方法可以查看流程和意图。在模拟器上转到菜单>开发工具>开发设置>并单击Show running processes

答案 3 :(得分:3)

据我所知,在不使用Intents(其他解决方案建议的内容)的情况下更改设备的Locale的唯一方法是通过反射访问内部类(具有这意味着的风险)。

您可以在此处找到此用例的确切示例: http://www.tutorialforandroid.com/2010/07/access-internal-classes-in-android.html

答案 4 :(得分:1)

如果您将意图更改为:

,请扩展Jim的答案
intent.setClassName("com.android.settings", "com.android.settings.LocalePicker"); 

它会直接在语言选择列表中删除用户,一旦选择了语言,它将返回到您的应用程序。

它删除了一个点击,不会让用户考虑选择三个(语言,词典和键盘)选项中的哪一个,并在选择后立即返回到您的应用。

相关问题