一、接收方向键的按键事件
首先附上源码路径/frameworks/base/services/core/java/com/android/server/policy/
@Override
public long interceptKeyBeforeDispatching(IBinder focusedToken, KeyEvent event,
int policyFlags) {
//这里可以进行方向键的屏蔽
if(Boolean.valueOf(SystemProperties.get("自定义拦截属性","false") && event.getDevice().getName().contains("拦截按键设备的名称,不知道可以先在这加个打印读取")){
return -1;
}
二、接收电源键、确认键、长按和短按等按键事件
@Override
public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags) {
if(Boolean.valueOf(SystemProperties.get("自定义拦截属性","false") && event.getDevice().getName().contains("拦截按键设备的名称,不知道可以先在这加个打印读取")){
return -1;
}
以上两个方法中可以进行拦截所有按键事件,另外PhoneWindowManager中dispatchUnhandledKey方法是最早收到系统级别的按键事件的,可以试着在这进行拦截
@Override
public KeyEvent dispatchUnhandledKey(IBinder focusedToken, KeyEvent event, int policyFlags) {
...
}