我有一个 android 应用程序,它处理来自标准键盘的输入与 Swype 键盘给出的输入不同。有没有办法以编程方式找出当前正在使用的键盘?
谢谢!
我有一个 android 应用程序,它处理来自标准键盘的输入与 Swype 键盘给出的输入不同。有没有办法以编程方式找出当前正在使用的键盘?
谢谢!
最好的方法是使用 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#getKeyboardType%28%29
使用设置的安全静态内部类来获取默认键盘类型。
String defaultKeyboard = Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.DEFAULT_INPUT_METHOD);
返回类型将是一个以“/”分隔的字符串序列,因此将此字符串 wrt 拆分为斜杠以获取子字符串列表。该列表的第一个元素将为您提供默认键盘的包名称。
defaultKeyboard = defaultKeyboard.split("/")[0];
PS - 用 try catch 包装 Settings.Secure 调用的好习惯。