Android 按键拦截

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;
        }
           
  

2. APP拦截

相关推荐
淡淡的香烟42 分钟前
Android CameraX适配15
android
我命由我123451 小时前
Android 开发问题:布局文件中的文本,在预览时有显示出来,但是,在应用中没有显示出来
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
e***28291 小时前
【细如狗】记录一次使用MySQL的Binlog进行数据回滚的完整流程
android·数据库·mysql
安卓兼职framework应用工程师1 小时前
Android 15.0修改recovery 菜单项字体大小
android·recovery·菜单项·菜单项字体大小
东坡肘子1 小时前
当 Android 手机『强行兼容』AirDrop -- 肘子的 Swift 周报 #113
android·swiftui·swift
人民的石头1 小时前
android 设备实现回声消除方案
android
d***9351 小时前
【玩转全栈】----Django连接MySQL
android·mysql·django
Frank_HarmonyOS1 小时前
如何在Android中使用RemoteCallbackList?
android