2010-04-07 2 views
18

Я знаю, что в одном приложении можно использовать несколько языков через res/string и в зависимости от языка. В данном случае (ANDROID) controling the user languageИзменение настроек языка (локали) для устройства

Теперь, как я могу изменить язык телефона? Как я хотел бы сделать по Меню> Настройки> Язык & Keyboard> Выбор локали> языки

Есть ли реальный код для доступа к этим настройкам? Или мне нужно создать намерение для быстрого доступа к языковым настройкам. Пожалуйста, пост код

Edit: С класса Locale developer.android.com/intl/fr/reference/java/util/Locale.html

Конструктор по крайней мере Locale (язык String) Ввод - это язык. Как вы можете получить текущий язык, используемый на устройстве?

ответ

40

Не уверен, установить его непосредственно из приложения, но если вы хотите, чтобы отправить пользователю там изменить его сами, попробуйте это:

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

Hey Jim, Большое спасибо. Еще один вопрос, как вы узнали о имени пакета и имени класса для настроек? –

+5

То, что я сделал, это использовать мой телефон при подключении к компьютеру на USB-устройстве и посмотреть вывод логарифма. Каждый запуск Intent регистрируется на выходе. Строка читает I/ActivityManager (1018): Начальная активность: Intent {act = android.intent.action.MAIN cmp = com.android.settings/.LanguageSettings} В ожидании я пошел в Google Code Search и искал «LanguageSettings Android» Intent "и нашел пример того, кто делает именно это. Я сам протестировал его и упростил код для фрагмента. –

+0

Я нашел еще один ответ на свой вопрос. Проект с открытым исходным кодом http://code.google.com/p/languagepickerwidget/ Это воссоздание ListActivity для отображения и выбора языков. Джим, ваше решение очень просто и точно, что мне нужно. Это настройки для настроек. Сразу после публикации я загрузил на рынок приложение под названием «raygional». Если бы я мог (у меня всего 6 баллов), я бы сделал ваш ответ полезным. Существует еще один способ увидеть процессы и намерения. На эмуляторе перейдите в Меню> Инструменты Dev> Настройки разработки> и нажмите «Показать запущенные процессы». –

6

я нашел еще один ответ на свой вопрос. Проект с открытым исходным кодом code.google.com/p/languagepickerwidget Это воссоздание ListActivity для отображения и выбора языков.

Джим, ваше решение очень просто и точно, что мне нужно. Это настройки для настроек. Сразу после публикации я загрузил на рынок приложение под названием «raygional». Если бы я мог (у меня всего 6 баллов), я бы сделал ваш ответ полезным.

Существует еще один способ увидеть процессы и намерения. На эмуляторе выберите Меню> Dev Tools> Параметры развития> и нажмите Показать текущие процессы

+0

Есть ли какой-нибудь другой проект, подобный этому, который показывает, как просто изменить локаль ОС, но с лицензией Apache или что-то подобное? –

1

Чтобы расширить ответ Джима, если вы изменить намерение: от

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

Это капельные пользователя непосредственно в список выбора языка и после выбора языка он вернется в ваше приложение.

Он удаляет щелчок, не заставляет пользователя задуматься о том, какой из трех (язык, словарь и клавиатура) можно выбрать и вернуться к вашему приложению сразу после выбора.

+0

не работал на вкладке Samsung Galaxy Tab 2 (вызывает ActivityNotFoundException: не удается найти явный класс активности). Возможно, имеется обновленное намерение? – Jane

+0

это не работает на samsung galaxy s2 либо – dumazy

+0

, это не работает на Android 4.4.2 –

3

Насколько я знаю, единственный способ изменить Locale устройства без использования намерений (что предлагают другие решения) - это доступ к внутренним классам посредством отражения (с учетом рисков, которые это подразумевает).

Вы можете найти точный пример для этого случая использования здесь: http://www.tutorialforandroid.com/2010/07/access-internal-classes-in-android.html

11

Существует еще один способ, чтобы открыть настройки системы для изменения языка:

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

Это показывает только список языков, и когда вы выбираете один - он меняет язык на устройстве.

+1

Недостатком такого подхода является то, что если пользователь нажимает левую верхнюю икону (с «<» рядом с ней), она возвращается на экран «Язык и вход». – CJBS

Смежные вопросы