[TOC]
转自
http://blog.csdn.net/xiaolei10086/article/details/41212845
1 . 修改位置在LatinIME.java的class LatinIME的onCreate 结束之前
//20161206 byh begin
Log.i(TAG, "before updateResources onCreate end\n");
updateResources();
//20161206 byh end
主要是如果支持了红外,那么先insmod红外key,然后才允许的LatinIME, 所以初始化的时候就强制认为config里面没有hardware,所以默认LatinIME一直都在前台工作。
2. 修改另外一个是在LatinIME.java的public void onConfigurationChanged(final Configuration conf)里面
if (settingsValues.mHasHardwareKeyboard != Settings.readHasHardwareKeyboard(conf)) {
Log.e(TAG, "onConfigurationChanged begin 1\n");
Log.e(TAG, "" + String.format("onConfigurationChanged conf.keyboard %d Configuration.KEYBOARD_NOKEYS %d conf.hardKeyboardHidden %d Configuration.HARDKEYBOARDHIDDEN_YES %d\n",
(int)conf.keyboard, (int)Configuration.KEYBOARD_NOKEYS, (int)conf.hardKeyboardHidden, (int)Configuration.HARDKEYBOARDHIDDEN_YES));
if(Settings.readHasHardwareKeyboard(conf))
{
Log.e(TAG, "" + String.format("onConfigurationChanged conf.keyboard %d Configuration.KEYBOARD_NOKEYS %d conf.hardKeyboardHidden %d Configuration.HARDKEYBOARDHIDDEN_YES %d force updateConfiguration\n",
(int)conf.keyboard, (int)Configuration.KEYBOARD_NOKEYS, (int)conf.hardKeyboardHidden, (int)Configuration.HARDKEYBOARDHIDDEN_YES));
//conf.keyboard = Configuration.KEYBOARD_NOKEYS;
//conf.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_YES;
//20161206 byh begin
updateResources();
//20161206 byh end
return;
}
Log.e(TAG, "onConfigurationChanged begin 2\n");
这个主要是insmod 红外驱动或者插入了usb键盘后,那么强制认为没有hardward key。