如标题,下面的方法都试过 没什么用
方法一:(此方法在Android8.0 codebase已不可用) frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java中,如果把updateShowImeWithHardKeyboard()方法中的showImeWithHardKeyboard变量直接置为true,则可以实现软键盘与物理键盘的同时使用。(原本为读取Setting数据库字段来判断,所以也可以直接修改Setting字段来实现)
public void updateShowImeWithHardKeyboard() {
synchronized (mWindowMap) {
final boolean showImeWithHardKeyboard = Settings.Secure.getIntForUser(
mContext.getContentResolver(), Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD, 0,
mCurrentUserId) == 1;if (mShowImeWithHardKeyboard != showImeWithHardKeyboard) {
mShowImeWithHardKeyboard = showImeWithHardKeyboard;
mH.sendEmptyMessage(H.SEND_NEW_CONFIGURATION);
}
}
}
方法二:frameworks/base/core/java/android/inputmethodservice/InputMethodService.java,修改onEvaluateInputViewShown()方法直接返回true
public boolean onEvaluateInputViewShown() {
Configuration config = getResources().getConfiguration();
//return config.keyboard == Configuration.KEYBOARD_NOKEYS
// || config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES;
return true;
}