1. 系统深度拦截
拦截点:frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
拦截接口:interceptKeyBeforeDispatchingInner
java
/** {@inheritDoc} */
@Override
public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags) {
final long result = interceptKeyBeforeDispatchingInner(win, event, policyFlags);
final int eventDisplayId = event.getDisplayId();
...
}
private long interceptKeyBeforeDispatchingInner(WindowState win, KeyEvent event,
int policyFlags) {
final boolean keyguardOn = keyguardOn();
final int keyCode = event.getKeyCode();
final int repeatCount = event.getRepeatCount();
...
//拦截
if(keyCode == KeyEvent.KEYCODE_AUTO_SPEECH)
{
return -1;
}