Переключить профиль клавиатуры программно

Есть ли способ, которым мы можем переключать установленные клавиатуры программно (не заходя в раздел настроек вручную)?

Мое требование состоит в том, чтобы пользователю были представлены все клавиатуры, установленные на телефоне, и он получил диалоговое окно выбора, чтобы переключиться на одну из них?

(в основном мы хотим сократить шаг, чтобы перенести его на страницу настроек)

Ответы на вопрос(6)

Решение Вопроса

InputMethodManager imeManager = (InputMethodManager) getApplicationContext().getSystemService(INPUT_METHOD_SERVICE);
imeManager.showInputMethodPicker();

Как указывает Commonsware в своем ответе, нет способа сделать это за спиной пользователя.

 rajankz03 апр. 2014 г., 16:02
согласен с тем, что сказал Commonsware, но я принял ваш ответ, потому что это мое исследовательское приложение для пользовательского опыта и оно не собирается в playstore (я должен был упомянуть об этом в первоначальном вопросе)

/system/bin/ime утилита

Перечислите все установленные методы ввода:# ime list -a

Установите клавиатуру Google по умолчанию:
# ime set com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME

На Java-стороне Runtime.getRuntime (). Exec (...).

 Benny18 апр. 2017 г., 11:28
Ты должен бежатьime enable ... доime set ...

Если ваше приложение имеет системные привилегии и разрешение

<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />

Вы можете программно включить клавиатуру и установить ее в качестве текущей, сделав ее клавиатурой по умолчанию БЕЗ ЗНАНИЙ ПОЛЬЗОВАТЕЛЯ ИЛИ ВМЕШАТЕЛЬСТВА!

//get the old default keyboard in case you want to use it later, or keep it enabled
String oldDefaultKeyboard = Settings.Secure.getString(resolver, Setting.Secure.DEFAULT_INPUT_METHOD);

//enable your keyboard
Settings.Secure.putString(resolver, Settings.Secure.ENABLED_INPUT_METHODS, "com.my.keyboard/.full.path");

//set your keyboard as the new default keyboard
Settings.Secure.putString(resolver, Settings.Secure.DEFAULT_INPUT_METHOD, "com.my.keyboard/.full.path");

Вы можете включить несколько клавиатур (например, клавиатуру по умолчанию и вашу собственную), предоставив список клавиатур дляENABLED_INPUT_METHODS, разделены по ':'. Видеть @ Докумен

Вы можете проверить полный пакет и идентификатор пути своей клавиатуры, вызвавime list -a черезadb shell

 mtsahakis23 мая 2016 г., 13:01
Мне нравится ваш подход, он полезен для приложений с системными привилегиями. Есть ли подобный способ изменить подтип IME, например, с английского на английский на французский? Я пытаюсь сSettings.Secure.putInt(resolver, Settings.Secure.SELECTED_INPUT_METHOD_SUBTYPE, subTypeId) но у меня возникли проблемы с получением subTypeId. Из источников видно, что он равен внутреннемmSubtypeId но насколько я могу судить, это не разоблачить.
 Aakanksha08 июн. 2016 г., 09:26
Этот ответ мне очень помог. Благодарность :

которым мы можем переключать установленные клавиатуры программно (не заходя в раздел настроек)?

К счастью, нет, по соображениям безопасности. Если приложение может диктовать, какой редактор метода ввода используется, вредоносная программа изменит редактор метода ввода на свой кейлоггер.

 CommonsWare14 окт. 2012 г., 21:29
@ Роберт: Я прекрасно понял вопрос, спасибо.
 Robert14 окт. 2012 г., 21:48
Хорошо. В таком случае не могли бы вы рассказать о риске безопасности? Это, конечно, может раздражать, но я не вижу никаких рисков при переключении между утвержденными методами ввода.
 Robert14 окт. 2012 г., 21:27
Я думаю, ты неправильно понял вопрос. Раджанкз хотел узнать, есть ли способ переключения между установленными клавиатурами, а не как установить клавиатуру.
 CommonsWare15 окт. 2012 г., 12:19
@ Роберт: «Я имею в виду тот факт, что пользователь при установке стороннего метода ввода получит диалог с предупреждением» - такого предупреждения нет во время установки, по крайней мере, в настоящее время.
 Robert15 окт. 2012 г., 09:37
С «утвержденными методами ввода» я имею в виду тот факт, что пользователь при установке стороннего метода ввода получит диалог с предупреждением. После подтверждения предупреждения в списке способов ввода появится сторонняя клавиатура. При установке возникает угроза безопасности, а не выбор метода ввода. Во всяком случае, на самом деле есть API, который позволяет приложению показывать пользователю список методов ввода. Смотрите мой ответ на вопрос Раджанкза.
    InputMethodManager imeManager = (InputMethodManager) getApplicationContext().getSystemService(INPUT_METHOD_SERVICE);
    imeManager.showInputMethodPicker();

import android.content.Intent;

import android.view.inputmethod.InputMethodManager;

// To enable keyboard

startActivity(new Intent("android.settings.INPUT_METHOD_SETTINGS"));

// To activate the keyboard

InputMethodManager imeManager = (InputMethodManager) 
getApplicationContext().getSystemService(INPUT_METHOD_SERVICE);
imeManager.showInputMethodPicker();

Ваш ответ на вопрос