Android 输入法截取key优先于view

为了验证编写了个例子

首先是输入法

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class RemoteKeyboard extends InputMethodService  {
 
  @Override public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (processKey(event, 0 != event.getRepeatCount()))
            return true;
        return super.onKeyDown(keyCode, event);
    }
 
    @Override public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (processKey(event, true))
            return true;
        return super.onKeyUp(keyCode, event);
    }
 
    private boolean processKey(KeyEvent event, boolean doIt) {
         Log.e("======= " ," ============ processKey");
         return false;
    }
}


其次是app view

 

 

1
2
3
4
5
6
7
final TextView et1 = (TextView)findViewById(R.id.editText1);
et1.setOnKeyListener(new OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event)
    {
        Log.e("====================","====OnKeyListener ");
    }


运行程序打印

 

============================ : ============ processKey

==================== :====OnKeyListener

============================ : ============ processKey

==================== :====OnKeyListener

第一遍应该是KeyDown, 第二遍应该是 KeyUp, 说明Android 输入法截取key优先于view

 

又试验了一下改写system/usr/keychars/Generic.kcm

把 B 改为

key B {
base: 'b' fallback DPAD_CENTER
}

在一个不可编辑框, log 如下

 

12-23 05:18:09.093 118 118 E ============================ : ============ processKey

12-23 05:18:09.094 118 118 E ============================ : ============ processKey
12-23 05:18:09.163 118 118 E ============================ : ============ processKey
12-23 05:18:09.163 118 118 E ============================ : ============ processKey

说明b没有被 accept,而后又调用了 DPAD_CENTER

 

在一个可编辑框,b被accept, log 如下

============================ : ============ processKey

============================ : ============ processKey

说明没有调用 fallback

 

如果改法如下

key B {
base: fallback DPAD_CENTER
}

在一个可编辑框也要打4行log, 说明 fallback被调用了

 

结伴旅游,一个免费的交友网站:www.jieberu.com

推推族,免费得门票,游景区:www.tuituizu.com

posted @ 2014-12-30 09:09  回忆安在  阅读(271)  评论(0编辑  收藏  举报