2010-04-07 240 views
18

我知道可以通过res /字符串在一个应用程序中使用多种语言,具体取决于语言环境。 这里是一个案例 (ANDROID) controling the user language更改设备的语言设置(语言环境)

现在我该如何更改手机中的语言? 就像我会通过 菜单>设置>语言&键盘>选择语言环境>语言

有一些实际的代码来访问这些设置吗? 或者我应该创建一个语言设置快捷方式的意图。 请张贴一些代码

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

构造至少区域设置(String语言) 输入是语言。 如何检索设备上使用的当前语言?

回答

40

不确定直接从应用程序设置,但如果你想有发送用户去改变它自己,试试这个:

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

嘿吉姆, 非常感谢。 只是另一个问题,你是如何知道设置的包名和类名的? – 2010-04-07 23:40:02

+5

我所做的是在使用USB连接到我的PC时使用手机,然后查看logcat输出。每个启动的Intent都记录到输出中。阅读I/ActivityManager(1018):开始活动:Intent {act = android.intent.action.MAIN cmp = com.android.settings/.LanguageSettings}在预感上,我进入Google Code Search并搜索“LanguageSettings Android意图“,并找到了一个人做这个的例子。我自己测试了它,并简化了代码片断。 – 2010-04-07 23:55:19

+0

我对自己的问题找到了另一个答案。 有一个开放源代码项目 http://code.google.com/p/languagepickerwidget/ 它重新创建一个ListActivity来显示和选择语言。 吉姆,你的解决方案非常简单,正是我所需要的。这是对设置的快速切入。在您发布后,我立即在市场上上传了一个名为“raygional”的应用程序。如果我可以(我只有6分),我会让你的答案有用。 还有另一种方法来查看过程和意图。在模拟器上,进入菜单>开发工具>开发设置>,然后点击显示正在运行的进程。 – 2010-04-10 14:42:36

6

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

吉姆,你的解决方案非常简单,正是我所需要的。这是对设置的快速切入。在您发布后,我立即在市场上上传了一个名为“raygional”的应用程序。如果我可以(我只有6分),我会让你的答案有用。

还有另一种方法来查看过程和意图。在模拟器上进入菜单>开发工具>开发设置>,点击查看正在运行的进程

+0

是否有任何其他项目与此类似,它展示了如何改变操作系统的区域设置,但是使用Apache许可证或类似的东西? – 2014-03-29 19:04:50

1

为了扩大对吉姆的答案,如果你改变的意图:关闭直接

intent.setClassName("com.android.settings", "com.android.settings.LocalePicker"); 

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

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

+0

在Samsung Galaxy Tab 2上无法正常工作(导致ActivityNotFoundException:无法找到显式活动类)。是否有更新的意图可用? – Jane 2013-03-11 13:20:45

+0

这不适用于三星Galaxy S2 s – dumazy 2013-04-19 09:42:39

+0

这不适用于Android 4.4.2 – 2016-03-30 09:28:29

11

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

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

这表明仅仅是语言列表中,当你选择一个时 - 它会改变设备上的语言。

+1

这种方法的缺点是,如果用户按左上角的图标(旁边有“<”),它会返回到“语言和输入”屏幕。 – CJBS 2014-08-26 22:52:18