解决Android 5.1物理键盘与软键盘的同时使用


http://blog.csdn.net/u014770862/article/details/52459166


Android 5.1系统中插入扫码枪物理设备后,软键盘无法弹出的问题。

1. 
在代码frameworks/base/services/core/Java/com/android/server/wm/WindowManagerService.java中,如果把updateShowImeWithHardKeyboard()方法中的showImeWithHardKeyboard变量直接置为true,则可以实现软键盘与物理键盘的同时使用,但这样修改影响较大(哪些影响?),不推荐。

public void updateShowImeWithHardKeyboard() {
    //final boolean showImeWithHardKeyboard = Settings.Secure.getIntForUser(
    //mContext.getContentResolver(), Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD, 0,
    //mCurrentUserId) == 1;
    final  boolean  showImeWithHardKeyboard  =  true;
    synchronized (mWindowMap) {
    if (mShowImeWithHardKeyboard != showImeWithHardKeyboard) {
        mShowImeWithHardKeyboard = showImeWithHardKeyboard;
        mH.sendEmptyMessage(H.SEND_NEW_CONFIGURATION);
        }   
   }
}  
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12


在代码frameworks/base/core/java/android/inputmethodservice/InputMethodService.java类的第1143行,修改onEvaluateInputViewShown()方法直接返回true

public boolean onEvaluateInputViewShown() {
    Configuration config = getResources().getConfiguration();
    //return config.keyboard == Configuration.KEYBOARD_NOKEYS
    //      || config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES;
    return  true;
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

以上两种方法物理键盘和软键盘都能同时使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值