Определить тип виртуальной клавиатуры-андроида

У меня есть приложение для 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.

Другие вопросы по тегам