Подтвердить что ты не робот

Изменение языковых настроек (локали) для устройства

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

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

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

Изменить: С классом Locale developer.android.com/intl/fr/reference/java/util/Locale.html

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

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

Есть еще один способ увидеть процессы и намерения. На эмуляторе перейдите в Меню > Инструменты разработчикa > Настройки разработки > и нажмите "Показать запущенные процессы"

Ответ 4

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

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

Ответ 5

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

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

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

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