我知道可以通过res / string在单个应用程序中使用多种语言,具体取决于Locale。 这是一个案例 (ANDROID) controling the user language
现在我该如何更改手机中的语言? 就像我做的那样 菜单>设置>语言与键盘>选择区域设置>语言
是否有一些真正的代码可以访问这些设置? 或者我应该为语言设置的快捷方式创建意图。 请发布一些代码
编辑: 使用Locale类 developer.android.com/intl/fr/reference/java/util/Locale.html
构造函数至少是Locale(String language) 输入是语言。 如何检索设备上使用的当前语言?
答案 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");
它会直接在语言选择列表中删除用户,一旦选择了语言,它将返回到您的应用程序。
它删除了一个点击,不会让用户考虑选择三个(语言,词典和键盘)选项中的哪一个,并在选择后立即返回到您的应用。