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拦截

相关推荐
GitLqr4 小时前
Flutter 无障碍开发实战:玩转 Semantics 解决视障用户使用痛点
android·flutter·dart
雨白8 小时前
掌握 NestedScrolling 嵌套滑动:手写仿知乎折叠主页
android
Xzaveir9 小时前
别把所有“认证”都塞进 AuthService:实名、一键登录与号码身份的领域拆分
android·人工智能
BerrySen17810 小时前
KMP全栈开发:从Android到AI Agent的技术演进与实践
android·人工智能
AFinalStone11 小时前
Android 7系统休眠唤醒(一)电源管理架构全景图
android·powermanager·电源管理
YM52e11 小时前
鸿蒙Flutter Center居中组件:Align对齐详解
android·学习·flutter·华为·harmonyos·鸿蒙
时间的拾荒人12 小时前
MySQL 视图详解
android·数据库·mysql
祉猷并茂,雯华若锦13 小时前
Appium 3.x安卓按键与通知栏操作全指南
android·appium
码农coding13 小时前
android 12 SurfaceFlinger开机启动分析
android
hunterandroid14 小时前
Paging 3 RemoteMediator 实战:构建离线优先的分页列表
android·前端