Определить тип виртуальной клавиатуры-андроида
У меня есть приложение для Android, которое обрабатывает ввод со стандартной клавиатуры не так, как ввод с клавиатуры Swype. Есть ли способ программно узнать, какая клавиатура используется в настоящее время?
Спасибо!
2 ответа
Лучший способ получить это - использовать InputDeviceId.
int[] devicesIds = InputDevice.getDeviceIds();
for (int deviceId : devicesIds) {
//Check the device you want
InputDevice device = InputDevice.getDevice(deviceId);
//device.getName must to have virtual
//That check the keyboard type
device.getKeyboardType(); //returns an int
}
Ссылка:
https://developer.android.com/reference/android/view/InputDevice.html
Используйте безопасный статический внутренний класс параметров, чтобы получить тип клавиатуры по умолчанию.
String defaultKeyboard = Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.DEFAULT_INPUT_METHOD);
Тип возврата будет последовательностью строк, разделенных «/», поэтому разделите эту строку на косую черту, чтобы получить список подстрок. Первый элемент этого списка даст вам имя пакета клавиатуры по умолчанию.
defaultKeyboard = defaultKeyboard.split("/")[0];
PS - Хорошая практика обертывать Settings.Secure вызовов с помощью try catch.