调试过程:
输入法不可见(软键盘不可见),一般情况下,是在外接物理鼠标键盘时出现,
我们初步可以判断的方式是用系统自带的LatinIME输入法来测试
一般来说,我们通过dumpsys SurfaceFlinger可以查看图层,会看到:InputMethod
证明输入法程序是没问题的,只是没有画面,
另外一个我们可以使用hierarchyviewer.bat来查看当前图层,会发现输入法是存在的,只是布局没有,那么我们就可以更加放心的确认是一些配置的问题了。
该输入法的程序在:/packages/inputmethods/LatinIME路径下
我们可以通过修改这里的程序,来看看,通过加打印的方式看看具体的问题是什么
通过修改:
LatinIME.java中函数
public boolean onEvaluateInputViewShown()
直接返回return ture;
当然,我们可以通过打印看看信息,在上面的函数中增加打印
Configuration config = getResources().getConfiguration();
把config.keyboard和config.hardKeyboardHidden中的值打印出来,你一般有所发现
直接返回return true后,发现软键盘可以出现了,则我们的问题就可以直接定位了,是由于物理键盘插入的缘由,当然,有些方案厂给的SDK或许本身设置的问题,一样导致这个现象
最终我们修改方案:
WindowManagerService.java
位于:/frameworks/base/services/core/java/com/android/server/wm/
void computeScreenConfigurationLocked(Configuration config)
将
if (device.getKeyboardType() == InputDevice.KEYBOARD_TYPE_ALPHABETIC) {
config.keyboard = Configuration.KEYBOARD_QWERTY;
keyboardPresence |= presenceFlag;
}
把其中的config.keyboard = Configuration.KEYBOARD_QWERTY;
修改成
config.keyboard = Configuration. KEYBOARD_NOKEYS;
修改后,重新编译
烧录系统后,则会发现输入法可见了。
祝您好运
所有问题都不是问题,只要我们细心去查
谢谢